gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:00:38 27 4
gpt4 key购买 nike

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

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

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

最佳答案

好吧,如果你想分配类型的数组,你可以将它分配给该类型的指针。

由于 2D 数组是数组的数组(在您的例子中,是一个由 512 个 256 个字符的数组组成的数组),因此您应该将其分配给一个指向 256 个字符的数组的指针:

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

(*arr 两边的括号是使其成为指向数组的指针,而不是指针数组)

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

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