code1:
int a[2]={1,2};
int * p=a;
code2:
int a[2][5]={1,2,3,4,5,6};
int * *p=a;
以上两份代码中,第一份不会报错,但第二份会报错,因为p是int * *类型,而a是int (*) [5]类型。
第二份代码中,如果使用cout输出a,a[0]和&a[0][0],会发现三者的值一样,再输出*a,会发现值与以上三者完全一样。
但是如果使用sizeof,则会得出完全不同的结果,会发现sizeof(a)是整个数组的大小(我的电脑上是40),sizeof(a[0])是数组一行元素的大小(本例中是一行5个元素,我的电脑上是20),sizeof(&a[0][0])是4。
C++中,二维数组实际上是一个每个元素都是一维数组的一维数组。</