c++ - 我如何为二维数组分配内存?

标签 c++ arrays new-operator dynamic-arrays

如何使用“new”运算符声明一个二维数组?我的书是这样说的:

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

但这对我来说没有意义。 p 是一个指向 4 个整数数组的指针,那么如何让它指向一个二维数组呢?

最佳答案

看来您需要指向指针的指针。编辑:嗯,更准确地说,下面的例子创建了一个指向数组的指针数组

先做:

int **p = new int*[NUM];

在这里您已经创建了指针数组。现在您需要为它们中的每一个创建另一个数组。你可以这样做:

for(int i = 0; i < NUM; i++)
{
    p[i] = new int[ANOTHER_NUM];
}

对于释放你做类似的,但以相反的方式:

for(int i = 0; i < NUM; i++)
{
    delete[] p[i];
}

最后:

delete[] p;

现在您可以使用它了。这样你就可以创建N维数组,只需添加更多'*'。如果您有任何其他特定问题,请在评论中提问。

但是,一般来说,要获得更多信息,我建议您首先尝试使用 Google 搜索“C++ 中的二维数组”或“C++ 二维数组的动态分配”等问题,即。 e. this query .

关于c++ - 我如何为二维数组分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062655/

相关文章:

php - 如何找到数组中的最小数字并返回该数组的主索引?

javascript - 检查字符串是否包含子字符串而不使用indexOf - Javascript

c++ - 使用智能指针为大量对象创建多个索引

c++ - 构造函数错误 : expected ‘{’ at end of input

c++ - UE4 类运算符 bool() 重载

c++ - 不能明确特化

C - 解析任意图像文件

c++ - 如何强制 new 运算符返回的指针为 32 字节对齐

java - 不使用 new 运算符实例化对象

c++ - C++ 'new' 运算符有问题吗?