今天我又学到关于指针与二维数组的一个知识点。
int main(int argc, char* argv[])
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p = a;
return 0;
运行时会出错,
error: cannot convert `int (*)[4]' to `int**' in return!!
因为a为三行四列的数组,a本身即代表第一个元素的地址,也是第一列一维数组的地址,如直接写:
int*p = a;
会出现奇异性!!
可以写成
int *p = &a[][];
或
int (*p)[4] = a;
其中两者的意义不同!
(自己思考...)