我正在编写 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/