【发布时间】:2016-04-06 09:16:16
【问题描述】:
我很好奇为什么说我迭代遍历链表时我必须使用while (list != NULL) 而不是while (!list)。我认为 NULL 等于零或假。
来自 cmets:当我尝试 while (!list) 时,我的程序似乎总是崩溃,但从不是前者。每个节点都包含一个指向一条数据的 void 指针和一个指向下一个节点的指针。
【问题讨论】:
-
你会从他们两个得到相同的结果
-
风格问题。第一个对读者来说更清楚。
-
@nos 当我尝试
!NULL时,我的程序似乎总是崩溃。它是一个有效的列表,其中每个节点都包含一个指向一段数据的 void 指针和一个指向下一个节点的指针。 -
@nos 我所做的只是遍历链表。每次都在做
list = list -> next。那我太没主意了……尤其是因为它可以与一个一起工作,但不能与另一个一起工作。 -
NULL is not zero。
!NULL为 1,因此您几乎总是会收到段错误,因为 1 在大多数系统上不是有效地址
标签: c linked-list