7 Stimmen

c-Syntax-Hilfe - sehr einfach

Wenn wir

char *val = someString;

und dann sagen

if(val){
    ....
}

Was ist die if Aussage hier tatsächlich überprüft?

5voto

Greg Hewgill Punkte 882617

Ihr if Anweisung ist gleichbedeutend mit:

if (val != NULL) { ...

Die comp.lang.c FAQ enthält diese Frage und Antwort in dem etwas ausführlicher erläutert wird, warum das so ist.

2voto

John Knoeller Punkte 32285

Es wird geprüft, ob if (val != 0) . In C sind alle Werte ungleich Null wahr, Null ist falsch.

2voto

mnemosyn Punkte 43977

val ist ein Zeiger auf ein Zeichen. Dieser kann auf eine beliebige Adresse - gültig oder ungültig - gesetzt werden. Die if-Anweisung prüft lediglich, ob val nicht null ist:

if(val)

ist gleichbedeutend mit

if(NULL != val)

ist gleichbedeutend mit

if((void*)0 != val)

Dennoch kann der Zeiger auf eine ungültige Stelle zeigen, z. B. auf Speicher, der sich nicht im Adressraum Ihrer Anwendung befindet. Daher ist es sehr wichtig, Zeiger auf 0 zu initialisieren, da sie sonst auf undefinierte Stellen zeigen. Im schlimmsten Fall könnte dieser Ort sein gültig und Sie werden den Fehler nicht bemerken.

1voto

Es wird geprüft, ob val den NULL-Zeiger enthält. Wenn Sie gesagt hätten,

char * val = NULL;

if ( val ) {
  ...
}

würde der Test fehlschlagen.

1voto

alvin Punkte 1166

Ob der Wert ein Null-Zeiger ist oder nicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X