(!指针)和(指针!= NULL)之间的C差异,

时间:2015-05-10 09:52:50

标签: c pointers

我目前正在学习如何编写C代码并偶然发现了一条有趣的行,

显然,

struct node{
    node *next;
};

node *head = (node *)calloc(1, sizeOf(node));
head->next = NULL;

node *currentNode = head;
while (!currentNode)

在这种情况下,是

while(!currentNode)

不同
while(currentNode != NULL)

?我认为他们的意思是检查相同的东西,当前的Node不是NULL但它们返回不同的结果而我不理解......

1 个答案:

答案 0 :(得分:3)

while(currentNode)

while(currentNode != NULL)

是等价的。

第一个说虽然currentNode有一些价值(可能是任何东西,甚至是垃圾),但第二个说虽然currentNode不是NULL,但是有一些价值。

另一方面,

while(!currentNode)

表示虽然currentNode没有任何值,但是NULL