首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

数组指针的解读?求议论

2012-10-20 
数组指针的解读?求讨论!int main(){int a[5][2] {0,1,2,3,4,5,6,7,8,9}int *p a[0]int (*p2)[2] &

数组指针的解读?求讨论!
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 

热点排行