2012-03-22 49 views
7

tôi đang trải qua một cuốn sách nghiên cứu liên kết danh sách và nhìn thấy những dòng này(node ​​*) NULL có nghĩa là gì trong C?

if(*head == NULL){ 

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

} 

sự khác biệt giữa NULL(node *) NULL là những gì họ có thể được sử dụng thay thế cho nhau?

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

Điều đó có nghĩa là tác giả của mã không biết anh ấy đang làm gì. 'NULL' không cần một diễn viên. – asveikau

+2

Đây chỉ là obfuscation. Con trỏ không cần so sánh với 'NULL' trong điều kiện. 'if (* head)' và 'if ((* head) -> next)' sẽ làm hoàn hảo. –

Trả lời

8

Khi so sánh con trỏ, các loại không được xem xét, do đó, nó là vô nghĩa.

Tác giả có thể chỉ bao gồm nó để làm rõ nếu đó là một cuốn sách giới thiệu. Nếu nó không phải là một cuốn sách giới thiệu, thì tác giả hoặc có một phong cách mã hóa kỳ lạ, hoặc bằng cách nào đó nghĩ rằng nó có ý nghĩa hơn.

+4

Tôi thấy những gì bạn đã làm ở đó ... – Supr

+0

@Supr Vô nghĩa là chỉ cần tôi đi từ cho vô ích :) – Corbin

7

Chúng có thể được sử dụng thay thế cho nhau. Nhưng nó không tiêu chuẩn và không bình thường để gõ NULL như mã của bạn.

Không cần truyền.