将int [] []赋值给int**

Mar*_*ton 4 c c++ arrays pointers

据我所知,在某些情况下,数组被转换为指向其第一个元素的指针:

int a[5];
int * p;

p = a;
Run Code Online (Sandbox Code Playgroud)

按照这种方法并考虑到我可以为指针分配一个数组,为什么我不能将二维数组分配给指针指针?

int a[5][5];
int ** q;

q = a;
Run Code Online (Sandbox Code Playgroud)

但是,我可以为指针指针指定一个指针数组:

int * p[5];
int ** q;

q = p;
Run Code Online (Sandbox Code Playgroud)

如果数组转换为指向其第一个元素的指针,则在第二个示例中发生q = a时,a应该是指向[0]的指针,而[0]应该是指向[0] [0]的指针, 对?

此外,如果我这样做,我不会收到错误:

cout << **a;
Run Code Online (Sandbox Code Playgroud)

在此先感谢,我希望你能帮助我理解.

Chr*_*phe 6

问题是数组int a[5][5];连续存储了25个int.

一个指向数组/指针的指针,int **q;希望找到一个连续指针数组int.

这就是您不想进行的任务.