一维数组:
int a[3]; &a是数组的地址,所以&a + 1是相当于增加12个字节。
*(&a) = a:对一维数组的地址取值等于数组首元素的地址。
一维数组名是指针常量,是首元素的地址。
二维数组:
int a[5][5];
*(*(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个元素的值;
三维数组:
int a[5][5][5];
*(*(*(a + i) + j) + k)的解析:
a + i:第i + 1个二维数组的地址;
*(a + i):第i + 1个二维数组的第一个一维数组的地址;
*(a + i)+ j:第i + 1个二维数组的第 j + 1个一维数组的地址;
*(*(a + i) + j):第i + 1个二维数组的第j + 1个一维数组首元素的地址;
*(*(a + i) + j) + k:第i + 1个二维数组的第j + 1个一维数组的第k + 1个元素的地址;
*(*(*(a + i) + j) + k):第i + 1个二维数组的第j + 1个一维数组的第k +1个元素的值;