对于一维数组
(1)数组名array表示数组的首地址,及&array[0]
(2)数组名array是地址常量
(3)array+i是元素array[i]的地址
(4)array[i]<=>*(array+i)
二维数组
int a[3][4]
a是数组名,包含三个元素,a[0],a[1],a[2],每个a[i]元素又是一个一维数组,包含4个元素。例如:a[0][0],a[0][1],a[0][2],a[0][3]
a:第0行的首地址 即a+i 代表第i行的首地址
a[0]:代表a[0][0]的地址,第0行,第0列的元素地址 即a[i]+j代表a[i][j]元素的地址,也可以表示为*(a+i)+j
a+i 与a[i]值相等,含义不同
a+i:&a[i],表示第i行首地址,指向行
a[i]????(a+i)或a[i][0],表示第i行第0列元素地址,指向列
指针与二维数组
1.指向一维数组的指针变量
定义:数据类型 (*指针名)[一维数组维数] 括号不能少
例如 int (*p)[4] p是一维数组的首地址,p是行指针
可以让p指向二维数组某行
int a[3][4] int (*p)[4]=a 注意一维数组维数,必须与二维数组维数相同
指针p指向0行,指针q指向第0列
if(i==0) (*p)[0]即第0行第0列 *q+1即第0行第1列 所以a[0][0]=2