new int[M][N] 的类型是什么?
What is the type of new int[M][N]?
根据 typeid(array).name()
在 G++ 4.8.4 中是 PAN_i
。我知道 P
表示指针,i
表示 int,但是 A
是什么类型,为什么只有第二维 - N
- 而不是第一个 - M
.
我应该在 auto array = new int[M][N]
中输入什么而不是自动输入?
有没有办法将 array
分配给 int**
?
另一个问题是M和N必须是编译时常量。如果不是,我想我唯一的选择是 the dynamic C++03 2D arrays.
What is the type of new int[M][N]?
类型是指向长度N
数组的指针1,或
int (*)[N]
如果您想到 new[]
表达式的作用,它会初始化一个在运行时给定长度的数组和 returns 指向该数组第一个元素的指针。所以
的类型
new T[M]
是T*
。在 2D 情况下,您可以将 T
视为 int[N]
。所以数组的每个元素都是一个自身数组,new
returns 是指向其第一个元素的指针。这可能是更清晰的表达方式:
typedef int ArrayN[N];
auto array = new ArrayN[M];
1 而在 C++ 中,C 样式数组的维度必须是编译时常量,这意味着 N
必须是常量表达式
根据 typeid(array).name()
在 G++ 4.8.4 中是 PAN_i
。我知道 P
表示指针,i
表示 int,但是 A
是什么类型,为什么只有第二维 - N
- 而不是第一个 - M
.
我应该在 auto array = new int[M][N]
中输入什么而不是自动输入?
有没有办法将 array
分配给 int**
?
另一个问题是M和N必须是编译时常量。如果不是,我想我唯一的选择是 the dynamic C++03 2D arrays.
What is the type of new int[M][N]?
类型是指向长度N
数组的指针1,或
int (*)[N]
如果您想到 new[]
表达式的作用,它会初始化一个在运行时给定长度的数组和 returns 指向该数组第一个元素的指针。所以
new T[M]
是T*
。在 2D 情况下,您可以将 T
视为 int[N]
。所以数组的每个元素都是一个自身数组,new
returns 是指向其第一个元素的指针。这可能是更清晰的表达方式:
typedef int ArrayN[N];
auto array = new ArrayN[M];
1 而在 C++ 中,C 样式数组的维度必须是编译时常量,这意味着 N
必须是常量表达式