数组的地址

时间:2011-11-10 20:21:07

标签: c++ arrays pointers

如果我有一个像这样声明的数组:

int a[3][2];

存储在地址A

然后a + 1等于A+2*4,这对我来说很清楚, 但为什么&a+1等于A+6*4

3 个答案:

答案 0 :(得分:7)

aint[2]的数组。其大小为2 * sizeof(int)。这就是a + 1 = A + 2*4的原因。 (因为你的sizeof(int) = 4

但是,&a是指向int[3][2]的指针。因此,sizeof(int[3][2]) = 6 * sizeof(int)&a + 1 = A + 6*4

答案 1 :(得分:2)

  

然后a + 1等于A + 2 * 4

这是因为a衰减到int (*)[2]+1导致2 * sizeof(int)

  

但为什么& a + 1等于A + 6 * 4?

在这种情况下,&a会返回int (*)[3][2]+1会返回2 * 3 * sizeof(int)

答案 2 :(得分:0)

因为运营商&优先于operator +。