|
|
发表于 2018-8-3 11:43:11
|
显示全部楼层
本楼为最佳答案
先看这边的例子:
int a[10]; int *p = &a; 那么 p == &a[0] ;也就是说指针是指向数组的第一个元素
int temp[5] = {1,2,3,4,5};
int (*p)[5] = &temp;
int temp[5] 是不是跟 (*p)[5] 很像?所以 (*p)[5]是数组,但所存储的资料是地址。
你的例子:
int array[2][3] = {{0,1,2},{3,4,5}};
int (*p)[3] = array; p 的跨度是 3
**(p+1) p 的跨度是 3, p+1 = 4,解引用 == 第四个元素 == 3
**(array +1) array的跨度也是 3
array[1][0] 直接访问 array 的第二行,第一列
*(*(p+1)+2) *(p+1) 还是指针(第二行,第一列),+2(往右边移动两格)
*(*(array+1)+2) array 跟 p 是一样的
array[1][2] 直接访问array 的第二行,第三列 |
|