gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:24:15 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com