gpt4 book ai didi

C 编程控制到达非空/段错误结束

转载 作者:行者123 更新时间:2023-11-30 19:17:35 26 4
gpt4 key购买 nike

我在使用旨在在列表末尾添加节点的函数时遇到问题。它似乎在 main() 中工作得很好问题是:当我在 bison 文件中调用此函数时,出现段错误。 gdb 调试器清楚地表明错误来自该函数。当我使用 -Wall -Werror 进行编译时,出现错误 controlreachedend of non-void function [-Werror=return-type]

这是我的功能:

int addNode(Node *n, list List) {
list *pList = (list *)malloc(sizeof(list));
*pList = List;

if (List == NULL) {
List = n;
} else {
while (((*pList)->next) != NULL) {
pList = &((*pList)->next);
}
(*pList)->next = n;
return (0);
}
}

我在另一个线程上看到,最后返回一个 int return(0); 而不是 void 可以解决错误,但是就我而言,它不起作用。如果有人有提示提前致谢

最佳答案

list *pList = (list *)malloc(sizeof(list));
*pList = List;

你想要

list *pList = &List; /* There is no need to call malloc */

control reaches end of non-void function

因为当(List == NULL)时你不会返回任何东西

这是错误的:

    while(((*pList)->next) != NULL){
pList = &((*pList)->next);
}

pList是一个指针,不是指向指针的指针,改为:

    while (pList->next != NULL) {
pList = pList->next;
}

关于C 编程控制到达非空/段错误结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27999526/

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