2012-03-22 62 views
7

我经历了一本书正在学链表,看到这些线路什么(节点*)NULL在C意味着什么?

if(*head == NULL){ 

}else if ((*head)->next == (node *) NULL){ 

} 

是什么NULL(node *) NULL之间的差异,他们可以互换使用?

typedef struct nodeType{ 
    int info; 
    struct nodeType *next; 
}node; 
+8

这意味着代码的作者不知道他在做什么。 'NULL'不需要强制转换。 – asveikau 2012-03-22 03:24:10

+2

这只是混淆。指针不需要在条件中与NULL进行比较。 'if(* head)'和'if((* head) - > next)'会完美。 – 2012-03-22 07:28:32

回答

8

比较指针时,不考虑类型,所以没有意义。

作者可能只是为了清楚起见,如果它是一本介绍性书籍。如果它不是一本介绍性的书,那么作者要么具有奇怪的编码风格,要么认为它更有意义。

+4

我看到你在那里做了什么... – Supr 2012-03-22 03:27:25

+0

@Supr Pointless只是我的词去无用:) – Corbin 2012-03-22 03:33:46

7

它们可以互换使用。但是,与您的代码一样,这是非标准并且不常见的类型为NULL

不需要强制转换。