gpt4 book ai didi

c - 在 iMac 上使用 gcc 出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:53 25 4
gpt4 key购买 nike

我正在编写一个函数,它获取链表的起始指针并使用提供的值附加一个新节点。我传递的列表也可能是空的。但是当我尝试运行该程序时,出现段错误 11。谁能帮我找出我哪里出错了?

void appendList(struct list* list, int value) {
struct list* ptr = list;
struct list* temp = (struct list*)malloc(sizeof(struct list));
temp->val = value;
temp->next=NULL;
if (ptr==NULL) {
ptr = temp;
return;
}
while ((ptr->next)!=NULL) {
ptr = ptr->next;
}
ptr->next = temp;
}

调用为:

int main()
{
struct list* result;
result = (struct list*)malloc(sizeof(struct list));
appendList(result,4);
appendList(result,2);
appendList(result,5);

return 0;
}

最佳答案

对于第一次迭代,当您调用该函数时,您的函数永远不会将列表视为空的,因为您已经手动创建了 resultmain 中的节点.结果,它的 next指针不需要而且显然不是 NULL (因为您从未在 NULL 中分配它 main )这就是您可能崩溃的原因。

因此,要修复此崩溃,请使用以下 main --

int main()
{
struct list* result;
result = (struct list*)malloc(sizeof(struct list));
result->next=NULL;
result->val = 0;

appendList(result,4);
appendList(result,2);
appendList(result,5);

return 0;
}

你可以考虑Daniel Fischer的评论并返回一个指针,这将是解决此问题的另一种方式。

关于c - 在 iMac 上使用 gcc 出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16501646/

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