如何使用new声明二维数组?
就像,对于"普通"数组,我会:
int* ary = new int[Size]
Run Code Online (Sandbox Code Playgroud)
但
int** ary = new int[sizeY][sizeX]
Run Code Online (Sandbox Code Playgroud)
a)不工作/编译和b)没有完成什么:
int ary[sizeY][sizeX]
Run Code Online (Sandbox Code Playgroud)
确实.
当我将它们调整到2维或更高时,我一直在使用动态指针运气不好.例如,我想要一个指向2D数组的指针.我知道:
int A[3][4];
int (*P)[4] = A;
Run Code Online (Sandbox Code Playgroud)
是完全合法的(即使我不完全理解为什么).考虑到:
int *P = new int[4];
Run Code Online (Sandbox Code Playgroud)
工作,我想象:
int **P = new int[5][7];
Run Code Online (Sandbox Code Playgroud)
也会有效,但事实并非如此.此代码说明错误:
Error: A value of type "(*)[7]" cannot be used to initialize an entity of
type "int **"
Run Code Online (Sandbox Code Playgroud)
看到这个,新的部分变成了一个指向我所做的7个整数数组的指针:
int (*P)[4] = new int[7][4];
Run Code Online (Sandbox Code Playgroud)
这确实有效,但这不是我想要完成的.通过这样做我至少限制为任何后续维度使用常量值,但我希望它在运行时完全定义,因此"动态".
我怎么能去使这个多维指针工作?