gpt4 book ai didi

C Simple List add Elements in a for-loop 不会工作,手动工作

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

这个有效:

struct list
{
int value;
struct list *next;
};

void addElement(struct list **l, int value)
{
if( *l == 0 )
{
*l = (struct list *) malloc(sizeof(struct list));
(*l)->value = value;
(*l)->next = 0;
}
else
{
struct list *new_element = (struct list *) malloc(sizeof(struct list));
new_element->value = value;
new_element->next = *l;
*l = new_element;
}
}

void printList(struct list *l)
{
struct list *temp;
for(temp = l;temp; temp = temp->next)
printf("%d ->", temp->value);
printf("%d",0);
}

int main(int argc, char **argv)
{
printf("Einfache verkettete Liste: ");
struct list *mylist;
int i;

addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);

printList(mylist);

return 0;
}

输出:

Einfache verkettete Liste: 10 ->10 ->10 ->10 ->10 ->10 ->10 ->10 ->10 ->10 ->0

但是如果我改变:

addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);

到:

for(i=0;i<10;i++)
addElement(&mylist,10);

它在运行时给出内存错误?它非常困惑,我不知道发生了什么。如何调试?

最佳答案

您从未将 mylist 初始化为 null,因此您第一次调用 addElement 时,*l == 0 是真的。看似无关紧要的代码重新排列会改变你的运气。

关于C Simple List add Elements in a for-loop 不会工作,手动工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18856628/

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