int a[2][3];
int **p;
p=a;//编译通不过
一直以来,都认为二位数组名可理解为指向指针的指针,从而通过两次解引用获得其任一子成员的值,但a又不是普通的指向指针的指针,因为p=a会报错.
原来:对于**数组,C++、C并不像一维数组那样可以简单的转化为同类型的指针,而是转换为预期等价的数组指针,如int (*p)[3];p=a;就是可以的。C++编译器需要知道除第一位的其他维数,从而在进行指针运算时确定要移动的字节数。
int a[2][3];
int **p;
p=a;//编译通不过
一直以来,都认为二位数组名可理解为指向指针的指针,从而通过两次解引用获得其任一子成员的值,但a又不是普通的指向指针的指针,因为p=a会报错.
原来:对于**数组,C++、C并不像一维数组那样可以简单的转化为同类型的指针,而是转换为预期等价的数组指针,如int (*p)[3];p=a;就是可以的。C++编译器需要知道除第一位的其他维数,从而在进行指针运算时确定要移动的字节数。