一维数组名是指针常量,保存的是数组首元素的地址
[] = *() a[i] = *(a + i)
&a:代表的是数组的地址,对数组名取地址等于数组的地址
*(&a)=a 对一维数组的地址取值等于一维数组的收元素的地址
二维数组 a[i][j]
*(*(a + i) + j ):
a + i: 第i + 1个一维数组的地址;
*(a + i ): 第i + 1个一维数组的首元素的地址;
*( a + 1) + j: 第i + 1个一维数组的第j + 1个元素的地址;
*(* (a + 1) + j):第i + 1个一维数组的第j +1个元素的值;
&a:对一维数组名取地址等于一维数组的地址。
a:一维数组首元素的地址;
aa:首个一维数组的地址;
*aa:首个一维数组的首元素的地址;
**aa:首个一维数组的首元素的值;
&aa:对二维数组名取地址等于二维数组的地址;
*(&aa)= aa:对二维数组的地址的取值等于首个一维数组的地址;
**(&aa)=*aa;
传一维数组名用元素指针来接;
传二维数组名用一维数组指针来接;
传三维数组名用二维数组指针来接;
指针数组原来保存指针;
指针与数组的区别:
指针比数组访问灵活,指针安全性低,容易造成内存泄露;
指针动态分配,空间利用率高;
数组直接访问,访问效率高。