数组名是指针常量,保存着数组首元素的地址。
一维数组名:首元素的地址。
a[i] = *(a+i);
a代表着数组首元素的地址;
&a 代表数组的地址(对数组名取地址等于数组的地址)
*(&a)= a 对一维数组的地址取值等于一维数组的首元素的地址。
二维数组名:首个一维数组的地址。
a[i][j] = *(*(a+i)+j);
a+i:第i+1个一维数组的地址。
*(a+i):第i+1个一维数组的首元素的地址。
*(a+i)+j:第i+1个一维数组的第j+1个元素的地址。
*(*(a+i)+j):第i+1个一维数组的第j+1个元素的值。
一维数组
a:一维数组首元素的地址。
&a:对一维数组取地址等于一维数组首元素的地址。
*(&a) = a:对一维数组的地址取值等于一维数组首元素的地址
二维数组
aa:首个一维数组的地址。
*aa:首个一维数组首元素的地址。
**aa首个一维数组首元素的值。
&aa对二维数组取地址等于二维数组的地址。
*(&aa) = aa:对二维数组的地址取值等于首个一维数组的地址。
三维数组
aaa:首个二维数组的地址。
*aaa:首个二维数组中首个一维数组的地址。
**aaa:首个二维数组中首个一维数组中首元素的地址。
***aaa:首个二维数组中首个一维数组中首元素的值。
数组作形参时,默认为指针;
数组作实参时,实质穿的是地址
数组指针的唯一作用
传二维数组形参用一维数组指针接(int (*a)[2])
传一维数组时,用元素指针来接
指针数组:保存指针的数组
int*a[3];