2012-03-22 49 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

不需要強制轉換。