Wenn wir
char *val = someString;
und dann sagen
if(val){
....
}
Was ist die if
Aussage hier tatsächlich überprüft?
Wenn wir
char *val = someString;
und dann sagen
if(val){
....
}
Was ist die if
Aussage hier tatsächlich überprüft?
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.
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.
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.