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

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

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

我应该在 auto array = new int[M][N] 中输入什么而不是 auto?

有没有办法将数组赋值给int**

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

最佳答案

What is the type of new int[M][N]?

类型是指向长度为 N 的 int1 数组的指针,或者

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 必须是常量表达式

关于c++ - new int[M][N] 的类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33327259/

相关文章:

c++ - 在 C++ 中打印 char 字符串时,Linux Ubuntu 中的 g++ 出现段错误,但 Windows 中的 g++/MingW 则不会出现段错误

c++ - 如何使用接口(interface)从 C++ 中的模板强制使用通用数据类型?

c - 使用包含 float 数组的 OpenCL 将结构传递给 GPU

c++ - unique_ptr 和前向声明 : the proper way to code a factory function

c++ - 使用 json c++ 的输出在字段中获取奇怪的字符

C++ Draw程序,分成两组

c++ - 异常处理+多态,如果异常方法不起作用,在同一个类中不起作用

javascript - 使用必需的表单字段填充 JavaScript 数组

java - 为什么 Java 中的字符数组接受整数值?

c++ - 使用#include<thread> 创建线程时出现段错误