求助一个c++中关于二维数组的指针问题~~~

来源:百度知道 编辑:UC知道 时间:2024/09/21 22:53:02
a是一个2维数组,3*4,那么a[1]和*(a+1)等价还是和a+1等价?为什么? 指针这一章
注意,a[1]不是一个数,还是一个数组啊!所以a[1]代表了a[1]这个数组的首地址。

a[1]就是*(a+1)

a+1是a[1]的地址

应该是和*(a+1)等价的吧!
因为*是指针,指向地址的意思
那么*(a+1)就是指向a[1]的地址的意思~
所以应该就是这个!

正确答案:a[1]和a+1等价、和&a[1][0]等价。
楼主说的对,a[1]是第二行的首地址,或者说是指向第二行这个一维数组的指针;
而*(a+1)==a[1][0]。

个人认为:前面的是地址所指向的值,后者代表一个地址。

声明一个二维数组:
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
可以得到如下结果:
C++对运算符“[]”的规则是:a[0]=*(a+0),a[1]=*(a+1),又因为a是一级数组类型,即a是一个指针,那么a+1等价于a的地址加上一个数组的大小(此题为4*4=16字节),所以a[1],*(a+1),a+1三者等价,代表二维数组第二行第一个元素的地址。
希望能帮到你~
以下为VC6.0验证结果:
a[1]=0012FF60
*a=0012FF50
*(a+1)=0012FF60
*(*(a+1))=5
*(*(a+1)+1)=6
*(*(a+2)+1)=10
a+1=0012FF60