Sla*_*zer 3 c++ arrays dynamic multidimensional-array c++11
根据typeid(array).name()它是PAN_i在G ++ 4.8.4.我知道P意味着指针和i意味着int,但是什么类型是什么A,为什么只有第二个维度N- 而不是第一个 - M.
我应该输入什么而不是自动输入auto array = new int[M][N]?
是否有分配的方式array来int**?
另一个问题是M和N必须是编译时常量.如果他们不是,我想我唯一的选择是动态C++ 03 2D阵列.
new int [M] [N]的类型是什么?
该类型是指向Nint 1的长度数组的指针,或
int (*)[N]
Run Code Online (Sandbox Code Playgroud)
如果您考虑new[]表达式的作用,它会初始化一个在运行时给定的长度数组,并返回指向该数组的第一个元素的指针.所以的类型
new T[M]
Run Code Online (Sandbox Code Playgroud)
是T*.在2D情况下,您可以将其T视为存在int[N].因此,数组的每个元素都是一个自身数组,并new返回指向其第一个元素的指针.这可能是一种更清晰的表达方式:
typedef int ArrayN[N];
auto array = new ArrayN[M];
Run Code Online (Sandbox Code Playgroud)
1在C++中,C样式数组的维度必须是编译时常量,意味着N必须是常量表达式