一维数组:
作为右值时,a 和&a[0] 相同,均表示数组首元素的地址。a+1是a[1]的地址
&a表示数组的首地址,值和a, &a[0]相同,但代表的意义完全不一样,&a+1则指向下一个数组的头一位
二维数组:
如int a[2][2]
a为二维数组名,表示其首元素地址,而其首元素是包含两个int的行数组,故a+1为a[1]的地址
任意元素可表示为*(*(a+i)+j)
int* p = a;是错误的,因为基类型不一样,int* 表示p指向的是int类型的数,而a这个地址指向了int行数组
a[0]是一维数组的名字,指向a[0]数组的首元素,*a[0] = a[0][0]
int* p = a[0];是对的 任意元素可表示为 *(p+i*N+j)