我很好奇为什么当我说我迭代地遍历链表时我必须while (list != NULL)
而不是while (!list)
。我认为NULL等于零或假。
来自评论:当我尝试while (!list)
时,我的程序似乎总是崩溃但从来没有前者。每个节点都包含一个指向一段数据的void指针和一个指向下一个节点的指针。
答案 0 :(得分:5)
while (list != NULL)
与while (!list)
不同。他们是对立的!当然你的程序崩溃了,它试图取消引用NULL
指针。
while (list != NULL)
与while (list)
相同。
答案 1 :(得分:1)
在大多数情况下,这是风格问题。与NULL
的比较更明确。
如上所述,if(ptr != NULL)
相当于if(ptr)
。