gpt4 book ai didi

c - 如何使用 malloc 为结构体数组分配空间?

转载 作者:行者123 更新时间:2023-11-30 21:25:28 25 4
gpt4 key购买 nike

我目前正在努力动态分配我的结构数组,但我不确定如何继续。这是我的结构:

struct Word_setup 
{
char word[M];
int count;
} phrase[N];

我知道 malloc 返回一个指向内存块的指针,但我不确定当涉及到结构数组时它是如何工作的。
如果有人可以澄清,我们将不胜感激!

最佳答案

可能你的意思是:

struct Word_setup {
char word[M];
int count;
};

无论如何,最好避免在结构定义的同一行中定义变量,以提高代码的可读性。

然后你可以分配一个数组:

int main()
{
struct Word_setup *phrase = malloc(N * sizeof *phrase);

// use phrases[x] where 0 <= x < N

phrase = realloc(phrase, (N+5) * sizeof *phrase);

// now can go up to phrases[N+4]

free(phrase);
}

当然,如果 mallocrealloc 返回 NULL,您应该检查是否失败并中止程序。

<小时/>

如果您还想动态分配单词内的每个字符串,那么有几个选项;最简单的理解是将 char word[M] 更改为 char *word; 并且每次分配一个短语时,写入 the_phrase.word = malloc( some_number); .如果您分配一个单词数组,则需要为每个单词循环执行此操作。

关于c - 如何使用 malloc 为结构体数组分配空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29739750/

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