如何将二维数组分配给**指针?

5 c++ arrays pointers

如何将二维数组分配给**指针?这就是我想做的事情

int arrray [2][3];
int **pointer = array;
so pointer[0][1]= 1;
Run Code Online (Sandbox Code Playgroud)

所以任何帮助?提前致谢

cni*_*tar 18

像这样声明指针:

int (*pointer)[3] = array;
Run Code Online (Sandbox Code Playgroud)

但这在C++中是无限讨厌的.如果你解释了你的一般目的,也许你可以找到一个更好的解决方案(一个涉及向量和诸如此类的东西).


Dav*_*eas 6

简单的答案是你做不到.二维数组是保持每一行的连续内存块,而指向指针的指针可以指向指向包含整数的不同内存位置的指针的内存位置.

另一方面,您可以创建一个单独的数据结构,以您希望的方式保存指向元素的指针(即创建指针数组,将指针初始化为每行的开头,并使用指向该指针数组的指针) as pointer),但它根本没用,反而会使一切不必要地复杂化.

这个问题可能来自于数组和指针相同的常见误解,而它们并非如此.数组可以衰减到指向数组第一个元素的指针(并且会经常这样做),但该指针的类型是第一个元素的类型.在二维数组中,第一个元素的类型是内部数组,而不是基本元素类型.