c++ - 是否可以在 C++ 中动态创建一个恒定大小的数组?

标签 c++ arrays new-operator

首先,我想向大家保证,我问这个问题是出于好奇。我的意思是,不要告诉我如果我需要这个,那么我的设计就有问题,因为我在实际代码中不需要它。希望我说服了你 :) 现在问题来了:

对于大多数类型 T 我们可以写

T* p = new T;

现在如果 T 是一个数组类型呢?

int (*p)[3] =  new ???; //pointer to array of 3 = new ???

我试过了:

typedef int arr[3];
arr* p = new arr;

但这不起作用。

是否有任何有效的语法,或者在 C++ 中是不可能的。如果不可能,那为什么?谢谢

编辑:我猜我不够清楚。我希望能够在这种情况下使用它:

void f(int(&)[3]);
int (*p)[3] = new ???;
f(*p);

最佳答案

要从 new 获取指向数组的指针,你必须动态分配一个二维数组:

int (*p)[3] = new int[1][3];

关于c++ - 是否可以在 C++ 中动态创建一个恒定大小的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5339950/

相关文章:

c++ - MaxHeapify 调用产生不在原始数组中的数字

c++ - 错误 : cannot add a default template argument to the definition of a member of a class template

javascript - 如何正确地将命令参数拆分为有组织的数组?

php - 从 MySQL 数据库中获取数组

c++ - 以下是新的重载泄漏内存吗?

c++ - 为什么要在结构中保留内存?

javascript - 无法返回适当的值

javascript - 如何检测后退按钮和新窗口?

svn - 创建一个包含新目录的 SVN 补丁

c++ - 在内存中存储大量数据