2012-03-22 17 views
7

ja jechałem przez książkę studiując połączonej listy i zobaczyłem te linieco oznacza (node ​​*) NULL w C?

if(*head == NULL){ 

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

} 

jaka jest różnica między NULL i (node *) NULL można je stosować zamiennie?

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

Oznacza to, że autor kodu nie wie, co robi. 'NULL' nie potrzebuje rzutowania. – asveikau

+2

To tylko zaciemnienie. Wskaźniki nie wymagają porównania z "NULL" w warunkowych. 'if (* head)' i 'if ((* head) -> next)' działałyby idealnie. –

Odpowiedz

8

Podczas porównywania wskaźników typy nie są uwzględniane, więc nie ma sensu.

Autor prawdopodobnie po prostu zamieścił to dla jasności, jeśli jest to książka wprowadzająca. Jeśli nie jest to książka wprowadzająca, autor ma albo dziwny styl kodowania, albo jakoś uważa, że ​​jest bardziej znaczący.

+4

Widzę, co tam zrobiłeś ... – Supr

+0

@Supr Bez sensu to tylko moja decyzja na słowo: bezużyteczne :) – Corbin

7

Można używać zamiennie. Ale jest to niestandardowe i nietypowe dla kodu typu.

Odlewanie nie jest wymagane.