2012-03-22 10 views
7

私は本を行っていたが、これらの線 Cでは(node *)NULLはどういう意味ですか?

if(*head == NULL){ 

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

} 

彼らは互換的に使用することができNULL(node *) NULLの違いは何である

をリストにリンクされたと見て勉強しますか?

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

これは、コードの作成者が彼が何をしているのかわからないことを意味します。 'NULL'はキャストを必要としません。 – asveikau

+2

これは単なる難読化です。ポインタは、条件文の中で「NULL」と比較する必要はありません。 'if(* head)'と 'if((* head) - > next)'は完全になります。 –

答えて

8

ポインタを比較する場合、型は考慮されないため、無意味です。

著者は、入門書であればわかりやすくするために、おそらくそれを含めています。それは入門書ではない場合は、著者は、奇妙なコーディングスタイルを持っているか、何らかの形でそれがより意味があると考えています。

+4

私はあなたがそこで何をしたのかを見ています... – Supr

+0

@Supr無意味です。 – Corbin

7

これらは互換的に使用できます。しかし、あなたのコードと同じようにNULLを型キャストするのは非標準で珍しいことです。

キャストは必要ありません。

関連する問題