如何使用新的[重新打开]在C ++中声明2D数组?

时间:2017-01-07 06:38:04

标签: c++ arrays pointers

我已经看过:

How do I declare a 2d array in C++ using new?

但是答案似乎都没有回答“如何使用新**声明** 2D数组?”这个问题。

所有答案似乎都通过声明指针数组或通过声明行*列大小的单维数组然后明确使用行,列计算来显示替代方案。

但是有没有办法在c ++中直接在堆中分配2D数组,就像我们在堆栈中一样?

示例:

int stackarray[3][2];

//Is there some equivalent to above?? Like :

= new int [3] [2];

1 个答案:

答案 0 :(得分:3)

  

但是有没有办法在c ++中直接在堆中分配2D数组,就像我们在堆栈中一样?

方法1(C ++ 11或更高版本)

int (*arr)[2] = new int[3][2];

方法2

arr

int [2]是指向 int 的指针,即 2 arr[0][0] -- arr[2][1] s 的数组。通过该分配,访问2D数组元素的有效索引为typedef int ARRAY1[2]; ARRAY1* arr = new ARRAY1[3];

方法3

using ARRAY1 = int[2];
ARRAY1* arr = new ARRAY1[3];

或者如果使用C ++ 11或更高版本,

{{1}}