2010-03-06 16 views

risposta

5

La vostra dichiarazione if è equivalente a:

if (val != NULL) { ... 

Il comp.lang.c FAQ contiene this question and answer che va in un po 'più in dettaglio perché questo è vero.

+0

Perché "approssimativamente"? – Felixyz

+0

@Felixyz: hai ragione, era una formulazione inutile. Ho aggiunto un link per maggiori dettagli. –

1

Sta testando se val contiene il puntatore NULL. Se avessi detto,

char * val = NULL; 

if (val) { 
    ... 
} 

il test fallirebbe.

+0

Vuoi dire che fallirebbe? – Tronic

+0

@Tronic Certo che l'ho fatto - mai post su SO prima di colazione! –

1

se val è un puntatore nullo o no.

2

Si sta verificando di vedere if (val != 0). In C tutti i valori diversi da zero sono veri, zero è falso.

1

La dichiarazione sta verificando se val, che è lo stesso di someString, non è NULL. Generalmente if (v) è una scorciatoia per if (v!=0).

1

È sufficiente controllare che val sia NULL o no.

2

val è un puntatore a un carattere. Questo può essere impostato su qualsiasi indirizzo -valid o non valido-. L'istruzione if sarà solo controllare se val non è nullo:

if(val)

è equivalente a

if(NULL != val)

equivale a

if((void*)0 != val)

Eppure, il puntatore può puntare a una posizione non valida, ad esempio la memoria che non è nel lo spazio degli indirizzi della tua applicazione. Pertanto, è molto importante inizializzare i puntatori a 0, altrimenti puntano a posizioni non definite. Nella peggiore delle ipotesi, tale posizione potrebbe essere valida e non si noterà l'errore.

1

Come altri hanno già detto, sta controllando se il puntatore del char non è NULL. Se si desidera verificare se la stringa non è vuota, provare strlen.

0

val è un puntatore, tale istruzione è uguale a se (val! = 0), mentre 0 è anche definito come NULL, quindi controllerà se quel puntatore sta puntando all'indirizzo NULL, tenere presente che il puntatore stringa NULL non è la stessa stringa vuota

0

La condizione di sopra indica se il puntatore punta a una stringa non nulla. Se il puntatore punta a una stringa non nulla, la condizione sarà vera.Else, falso.