相关疑难解决方法(0)

如何使用new在C++中声明二维数组?

如何使用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)

确实.

c++ arrays multidimensional-array dynamic-allocation

496
推荐指数
14
解决办法
87万
查看次数

初始化到多维数组的动态指针的正确方法?

当我将它们调整到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)

这确实有效,但这不是我想要完成的.通过这样做我至少限制为任何后续维度使用常量值,但我希望它在运行时完全定义,因此"动态".

我怎么能去使这个多维指针工作?

c++ pointers dynamic multidimensional-array c++11

26
推荐指数
2
解决办法
7万
查看次数