2019-01-26  16:06:35

1 int main()
2 {
3     int a[2][5] = {2,3,4,5,6,7,8,9,10,11};
4     int *ptr = (int*)(&a+1);
5     cout<<*(ptr-3)<<endl;
6 }


数组名是数组这种类型的变量名,所以对数组名取地址是取的整个数组的地址,所以&a+1自然要跨过整个数组的长度,本题即跨过2*5 = 10个int的长度。
有了上述概念,再来分析这道题,int *ptr = (int *)(&a+1),p此时指向的地址应该是a[1][4]后面的地址,由于ptr是int型指针,ptr-3应该是ptr向前移动3个元素,即ptr-3指向a[1][2],所以*(ptr -3) = 9
内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程