gpt4 book ai didi

c - 链表- NULL 指针检查?

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

在这段添加到链表的代码片段中,if (List==NULL) 是做什么的?我试图对其进行一些输入,看看我是否可以参与该声明,但没有运气。什么类型的输入有效?

main()
{
struct Node *List;
List = NULL;

append (&List, 5);
}



void append(struct Node **List, int num)
{
if (List == NULL)
{
return;
}


if (*List == NULL)
{
*List = malloc(sizeof(struct Node));
(*List)->data = num;
(*List)->next = NULL;

}
//some additional cases edited out for brevity
}

最佳答案

如果出于某种原因您(或您的库的用户)调用 append(NULL,42); 那么,感谢 if(List == NULL)检查一下,你的程序不会崩溃。否则(如果删除 if(List == NULL) 检查)则为 undefined behavior实际上segmentation fault会发生。该检查是 defensive programming 的一个实例.

原则上,它看起来像 append 旨在被称为 append(&somevar, someint) 但这没有记录,因此添加提取检查(即 < em>在运行时非常便宜!)是值得的。

关于c - 链表- NULL 指针检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28960118/

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