指针与数组

1.指针和数组:

int a[10];

int *pa;

pa=a;


数组名和指针几乎是一样的,为什么这么说呢?

因为:数组名就是数组的首地址,所以第一个元素的地址可以用两种方法获得:pa=&a[0]  或  pa=a

但是其实还是又一点不同的,为什么这么说呢?

因为:pa是一个可以变化的指针变量,但是a是一个常数,因为数组声明了以后,数组的地址就是固定的了,所以a是不能变化的,不能用a++,++a,a+=10这样的变化,而pa++,

++pa,pa+=10是可以的。


2.指针与一维数组

a.首先要明确的一点,一维数组一个线性表,即什么意思呢?一维数组它是被存放在一片连续的内存单元中的。

b.那么又是怎么访问这个一位数组的呢?通过数组名(数组的起始地址)+相对于起始地址的相对量(由数组下标给出)--->>得到要访问的数组元素的单元地址

例:a[i]其实等同于*(a+i)



3.指针与多维数组

首先看一下这个:     c[i][j][k]--->>*(*(*(c+i)+j)+k)

再看下这个代码:

int a[3][4];

int *p;

p=a;

解释:二维数组数组名a 赋值给p,p是一个int型的指针,p指向数组a的首地址,数组a的首地址是什么呢?a[0][0]

那如果 把代码最后一句改为   p=a[0];   这个时候指针p指向数组a[0],即相当于把a[0][]中的a[0]看做一个数组的数组名,作为首地址赋给指针p


总结参考c++语言从入门到精通一书


























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值