c - 堆分配一个二维数组(不是指针数组)

标签 c multidimensional-array malloc

我正在编写 C 代码,我想在堆上分配 512*256 字节。为了我自己的方便,我希望能够使用语法 array[a][b]; 访问元素。没有找到正确索引的算法。

我在网上看到的每个教程都告诉我创建一个指针数组,这些指针指向数组中我想要的行数组。这意味着每个子数组都需要单独分配和释放。我对一种只需要一次调用 malloc 和一次调用 free 的解决方案感兴趣。(因此所有元素都是连续的)我认为这是可能的,因为我不会构建锯齿状数组。

如果有人可以分享声明此类数组的语法,我将不胜感激。

最佳答案

好吧,如果你想分配类型的数组,你把它分配给那个类型的指针。

由于二维数组是数组的数组(在您的例子中,是一个包含 256 个字符的 512 个数组的数组),您应该将其分配给一个指向 256 个字符的数组的指针:

char (*arr)[256]=malloc(512*256);
//Now, you can, for example:
arr[500][200]=75;

(*arr 两边的括号是为了让它成为一个指向数组的指针,而不是一个指针数组)

关于c - 堆分配一个二维数组(不是指针数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10116368/

相关文章:

JavaScript 排序多维 JSON

c - 通过 malloc 故意隐藏内存

c - 整数文字的类型和 C 中的 ~

c - 将指向指针的指针分配给指向结构内部指针的指针

c - 围绕 .lib 文件编写与 GCC 兼容的包装器

php - 从多维数组中获取数据

在C中检查数组中是否有从0到长度-1的数字

c - C 中的 try-catch 语句

c - 正确释放结构

c - 地址未被堆叠、分配或(最近)释放