【发布时间】:2021-01-26 20:37:00
【问题描述】:
对于我的项目,我必须将我的数据保存在动态数据结构(动态数组、动态列表等)中,如我所料,在执行期间将使用malloc() 设置大小和容量。我完全忘记了它,我正在处理这些数据而没有分配任何内存。
#include <stdio.h>
#include <stdlib.h>
typedef struct Bet {
char* bets[3][2];
} Bet;
int main() {
Bet betTypes = { .bets={{"Red", "Black"}, {"Even", "Odd"}, {"1 to 18", "19 to 36"}}};
}
这就是我正在使用的。我很困惑我该怎么做。我做吗
typedef struct Bet {
int x;
int y;
char* bets[x][y];
} Bet;
然后在 main 我创建 Bet betTypes; 做 betTypes.x = 3; 和 betTypes.y = 2 并使用这些 x 和 y 调用 malloc()?但是,我如何创建完全相同的字符串列表,因为除了Bet betTypes = { .bets={{"Red", "Black"}, {"Even", "Odd"}, {"1 to 18", "19 to 36"}}};,我没有找到任何其他方法,如果我在此之前声明Bet betTypes;,那么Bet betTypes = { .bets={{"Red", "Black"}, {"Even", "Odd"}, {"1 to 18", "19 to 36"}}}; 部分将不起作用。或者我想我对内存分配太缺乏经验,我不知道这应该是什么样子(我也不知道如何为这个数组分配内存)
【问题讨论】:
-
结构必须有固定的尺寸。您需要阅读通过
malloc分配数组的内容,以便拥有运行时大小的数组 -
请注意,分配一个长度为
x*y的数组比尝试嵌套动态层更简单 -
@M.M 更容易分配/释放,但更难访问,因为您必须自己进行索引计算。
-
如果您使用的是硬编码初始化列表,为什么需要动态数组大小?
-
@Jay-Pi 好吧,我猜静态最大长度听起来更容易
标签: c dynamic-memory-allocation