【发布时间】:2017-07-24 19:22:37
【问题描述】:
有人可以帮我理解为什么这会给我带来分段错误吗?该函数应该在列表末尾添加 n。
typedef struct lligada {
int valor;
struct lligada *prox;
} *LInt;
void appendL (LInt *l, int n){
LInt new=(LInt)malloc(sizeof(struct lligada));
while ((*l) && (*l)->prox) l=&((*l)->prox);
(*l)->prox=new;
new->valor=n;
new->prox=NULL;
}
【问题讨论】:
-
现在是学习如何调试程序的好时机。请阅读How to Ask,并发布minimal reproducible example
-
不要投
malloc();不要在 typedef 后面隐藏指针。 -
struct lligada *head = NULL; appendL(&head, 42)将崩溃。你明白为什么吗? -
这可能无关紧要,但我不会将你的变量命名为
new,即使在 C 中是合法的 -
new是 C++ 中的运算符和大多数受 C 影响的语言中的关键字。这就是为什么它在这里突出显示为蓝色。可能没问题,但我想我会提醒你一下。
标签: c linked-list segmentation-fault singly-linked-list