sizeof(a)=sizeof(int **)*3*4=4*3*4=48,
sizeof(b)=sizeof(int *)*3*4=4*3*4=48,
sizeof(c)=sizeof(int)*3*4=4*3*4=48
c不是只代表数组的首地址,c不是一个变量,是一批变量,
地址和常量本身,并无固定的内存大小占用.就像100,1000这样的数值,并无内存占用问题.
有大小的是变量,变量组合和类型.
数组是一个变量组合,代表某种类型的一定数量的变量的地址,个数和类型.
因为可以用一个地址,确定组合中的所有变量的地址,所以该地址叫首地址.
换言之,对于二维数组c,c的值是一个常量地址,不是变量,同样数组c[0],c[1],也不是变量。
c[0][0],c[0][1],c[0][2],c[2][1]才是变量;
【int **a[3][4]】的每个元素里面存储 指针变量的地址。
【为什么三个的sizeof都是48】:
三个sizeof(...) 都等效于——>sizeof(数组元素类型)*3*4,因为你的计算机里面sizeof(int **) == sizeof(*) == sizeof(int) == 4(不信你可以测试一下),所有者三个sizeof(...)都相等咯。
数组名是代表数组首地址,但sizeof(数组名)是求数组所占内存的多少,不是求数组名大小。