C - 为什么必须将NULL与之比较?

时间:2016-04-06 09:16:16

标签: c linked-list

我很好奇为什么当我说我迭代地遍历链表时我必须while (list != NULL)而不是while (!list)。我认为NULL等于零或假。

来自评论:当我尝试while (!list)时,我的程序似乎总是崩溃但从来没有前者。每个节点都包含一个指向一段数据的void指针和一个指向下一个节点的指针。

2 个答案:

答案 0 :(得分:5)

while (list != NULL)while (!list)不同。他们是对立的!当然你的程序崩溃了,它试图取消引用NULL指针。

while (list != NULL)while (list)相同。

答案 1 :(得分:1)

在大多数情况下,这是风格问题。与NULL的比较更明确。

如上所述,if(ptr != NULL)相当于if(ptr)