数组题目分享
程序员文章站
2022-12-16 20:36:15
2019-01-26 16:06:35 数组名是数组这种类型的变量名,所以对数组名取地址是取的整个数组的地址,所以&a+1自然要跨过整个数组的长度,本题即跨过2*5 = 10个int的长度。 有了上述概念,再来分析这道题,int *ptr = (int *)(&a+1),p此时指向的地址应该是a[1 ......
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
上一篇: Matplotlib基本使用简介