数组指针的解读?求讨论!
int main()
{
int a[5][2] = {0,1,2,3,4,5,6,7,8,9};
int *p = a[0];
int (*p2)[2] = &a[1];
++p;
++p2;
printf("%d\n",*p);
printf("%d\n",**p2);
printf("%d \n",p2[1][2]); //如何解读?
return 0;
}
[解决办法]
printf("%d\n",*p); // p 是整型指针,初始指向元素0, 加1指向1
printf("%d\n",**p2); // p2是含2个元素的数组指针,初始指向元素2,该指针加1是向后移动2个数据,所以指向4
printf("%d \n",p2[1][2]);//同上,此时p2指向4,前一个下标1就是p2指针再加1指向6,后一个下标加2移动2个元素,指向了8
[解决办法]
应该是
- C/C++ code
printf("%d \n",p2[1][2]);//p2[1][2] 相当于p2 + 1,先指向a[3],然后&a[3][0] + 2,输出8