2012-03-22 11 views
7

stavo attraversando un libro studiava lista collegata e ho visto queste lineecosa significa (nodo *) NULL in C?

if(*head == NULL){ 

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

} 

qual è la differenza tra il NULL e (node *) NULL possono essere usati in modo intercambiabile?

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

Significa che l'autore del codice non sa cosa sta facendo. 'NULL' non ha bisogno di un cast. – asveikau

+2

Questa è solo offuscamento. I puntatori non hanno bisogno di confronto con 'NULL' in condizionali. 'if (* head)' e 'if ((* head) -> next)' farebbe perfettamente. –

risposta

8

Quando si confrontano i puntatori, i tipi non vengono considerati, quindi non ha senso.

L'autore probabilmente lo ha incluso per chiarezza se si tratta di un libro introduttivo. Se non è un libro introduttivo, allora l'autore ha uno stile di codifica dispari, o in qualche modo pensa che sia più significativo.

+4

Vedo cosa hai fatto lì ... – Supr

+0

@Supr Pointless è solo il mio go to word per inutile :) – Corbin

7

Possono essere utilizzati in modo intercambiabile. Ma non è standard e insolito digitare typ NULL come fa il tuo codice.

Nessun lancio richiesto.