多维动态数组,为什么不起作用?

Vek*_*kta 4 c++ arrays pointers

我不是在寻找解决方案,我在Google上找到了很多.我正在寻找解释.

在使用数组时,我发现动态声明2D数组并不像预期的那样工作

1D阵列,Works

int main()
{
int rows;
int* pointer;
pointer = new int[rows]; 
}
Run Code Online (Sandbox Code Playgroud)

2D数组,不起作用

int main()
{
int rows;
int columns;
int* pointer;
pointer = new int[rows][columns]; //error on this line
}
Run Code Online (Sandbox Code Playgroud)

在我看来,这就像直观的做事方式,因为它是如何用常规数组完成的,但显然它是不正确的,不会编译.

我无法找到明确解释为什么会出现这种情况,希望这里有人可以启发我.

谢谢 :)

Bor*_*der 6

这不起作用的原因是因为能够拥有一个二维数组,你需要一个指针数组,它将指向你想要的许多类型的数组.

在这种情况下,您尝试将地址存储到int*数组中(其中每个"单元"将指向一个int的数组)在int*类型的变量中,它应该是int**.

回顾一下:1D数组:int*2D数组:int**3D数组:int***

所有数组必须是一维的原因是因为你的内存是一维的(将所有内存视为一个大的内存地址数组),这意味着多维数组必须"伪造".