输出的值:
sizeof(a) = 24 sizeof(a[0]) = 12 sizeof(a[0][0]) = 4 &a = 22fe30 &a[0] = 22fe30 &a[0][0] = 22fe30看看 二维数组 a, 各个 sizeof 的值
sizeof(a) = 2*3*sizeof(int) = 24sizeof(a[0]) = 3*sizeof(int) = 12sizeof(a[0][0]) = sizeof(int) = 4二维数组的 a, 各个地址和指针类型
&a = 0x22fe30 = int (*)[2][3]&a[0] = 0x22fe30 = int (*)[3]&a[0][0] = 0x22fe30 = int * 他们的地址都是一样的,但是指针的类型和所代表的意义是不一样的。&a:表示该二维数组的指针,指针加一,表示地址移动整个二维数组的长度,即是: sizeof(a)=24 个字节。&a[0]:表示该二维数组第0行的指针, 指针加一,表示地址移动一行的长度,即是 sizeof(a[0])=12 个字节。&a[0][0]:表示该二维数组第0行第0列的指针, 指针加一,表示地址移动一个数组元素的长度,即是 sizeof(a[0][0]) = sizeof(int) = 4 个字节。这里可以得出一个结论: 同一个地址,可以被不同类型的指针所指向,并且指向该地址的不同类型的指针所代表的意义也是不一样的。
Pillar Peng 2017.1.14 10:33