new int [M] [N]的类型是什么?

时间:2015-10-25 07:25:33

标签: c++ arrays c++11 dynamic multidimensional-array

根据typeid(array).name(),它在G ++ 4.8.4中为PAN_i。我知道P表示指针,i表示int,但是A是什么类型,为什么只有第二维 - N - 而不是第一维 - {{1} }。

我应该在M中输入什么内容而不是自动?

有没有办法将auto array = new int[M][N]分配给array

另一个问题是M和N必须是编译时常量。如果不是,我想我唯一的选择是the dynamic C++03 2D arrays

1 个答案:

答案 0 :(得分:5)

  

new int [M] [N]的类型是什么?

该类型是指向int 1 的长度N数组的指针,或

int (*)[N]

如果你想到new[]表达式的作用,它会初始化一个在运行时给出的长度数组,并返回指向该数组的第一个元素的指针。

的类型
new T[M]

T*。在2D情况下,您可以将T视为int[N]。因此,数组的每个元素都是一个自身数组,new返回指向其第一个元素的指针。这可能是一种更清晰的表达方式:

typedef int ArrayN[N];

auto array = new ArrayN[M];

1在C ++中,C样式数组的维度必须是编译时常量,意味着N必须是常量表达式