标签:
对C++里面的多维数组进行操作
int arr[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
int * p1 = (int *)(arr + 1);
cout << p1[0] << endl;
int * p2 = (int *)(&arr + 1);
cout << p2[-1] << endl;
cout << arr << endl;
cout << &arr << endl;
p1 = (int *)arr[1];
cout << p1[0] << endl;
运行上述代码调试中间过程发现
arr是一个int(*)[3]类型,&arr是一个int(*)[2][3]类型,例如下例:
int arr[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
int (*p1)[3] = arr;
int (*p2)[2][3] = &arr;
&arr返回了整个数组作为的指针
同时写了一个小例子
int arr[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
cout << arr << endl << &arr << endl;
输出结果:
我理解应该是arr是数组名,就是数组存储的首地址,&arr是对整个数组作为变量进行取值,所以返回的地址都是数组首地址,是相同的,只是指针类型上,arr是整形指针,&arr是数组指针。
数组指针:指向数组,指针大小跟数组大小一样
指针数组:一个元素代表一个指针,指针大小都一样,受指针数组类型约数。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/zhangzhengyi03539/article/details/47442347