Smo*_*kie 2 c linked-list data-structures
我试图弄清楚为什么我的程序在调用ll_print时崩溃了.[[这是一个非常简单直接的问题,我不确定要添加什么来填补解释空白]]
struct ll{
struct ll* next;
int n;
} ll;
void ll_print(struct ll *l){
while (l) {
printf("%d ", l->n);
l=l->next;
}
}
void ll_fill(struct ll *l, int n){
struct ll *temp= NULL;
while (n>0){
l= (struct ll*)malloc(sizeof(struct ll));
l->n=n;
l->next= temp;
temp=l;
n--;
}
}
int main(void){
int i=0;
struct ll *l;
ll_fill(l, 10);
ll_print(l); /** causing a segmntation fault **/
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这l是因为指针永远不会被初始化.看起来你希望ll_fill初始化它,但是你错了 - 它是通过值传递的(read-by copy),而你l在ll_fill函数中分配的任何东西都不会为l声明的内部赋值main.要实现你想要的,传递l指针(你将有指针指针).或者,将其作为返回值ll_fill并执行l = ll_fill(l, 10);.另外,给自己一个调试器 - 它会帮助你很多.