gpt4 book ai didi

c - 如何使用具有多个变量的结构初始化链表

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

我仍然对链表和结构之间的关系有困难。

看,我的目标是创建一个列表,其中每个节点包含 2 个字符串。所以,我尝试了这样的事情:首先,我创建了一个结构,用我的 2 个字符表示一个元素;其次,我的列表的控制结构,它将指向我的列表的开头。在我的 .h 中,它给出了这样的东西:

typedef struct s_def { char *first_word; char *second_word; struct s-def *next; }  t_def

typedef struct s_type { t_def *first; } t_list;

接下来,我尝试初始化我的列表。我做了一个像这样工作的函数:

t_list *list;
t_def *words;

list = malloc(sizeof(*list));
words = malloc(sizeof(*words));
if (list == 0 || words == 0)
return (NULL);
words = NULL;
words->next = NULL;
list->first = words;

return (list);

精度:我现在尝试制作一个空列表,以便用户稍后可以添加一些元素。

这就是它阻塞的地方:当我运行程序时,它给出了典型的段错误。但它看不出我做的有什么问题!我在我的函数中写了一些东西来追溯这个过程:malloc 工作正常,words = NULL,但是段错误似乎在

行运行
words->next = NULL;

我做错了什么?为什么我不能在接下来的单词中给出 NULL 值?

最佳答案

首先用分配的内存初始化word指针

words = malloc(sizeof(*words));

然后在 3 行之后,您再次将该指针设置为 NULL,造成内存泄漏

words = NULL;

然后您尝试取消引用刚刚设置为 NULL 的指针:

words->next = NULL;

所以,只需删除 words = NULL;

关于c - 如何使用具有多个变量的结构初始化链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33566674/

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