C-Programmierung

Einsatz Des Null-Pointers

Null-Pointer | | Zeiger auf Zeiger

Falls Parameter mittels Call-by-Reference übergeben werden, dient der NULL-Pointer häufig dazu, einen nicht vorhandenen (d.h. optionalen) Adressparameter zu signalisieren.

void time2hours(unsigned int time,
                unsigned int *hours,
                unsigned int *minutes,
                unsigned int *seconds)
{
   if (hours)   *hours   = time/3600;
   if (minutes) *minutes = time/60%60;
   if (seconds) *seconds = time%60;
}

unsigned int h;

time2hours(2000, &h, NULL, NULL);

Der unbenutzte Funktionswert wird im Allgemeinen benutzt, um einen Fehlercode (oder Flag) zurückzugeben. Dieser signalisiert, ob die Funktion fehlerfrei abgelaufen ist und ob die Rückgabewerte dementsprechend zugewiesen wurden. Signalisiert der Fehlercode ein Problem, so ist der Wert der Ergebnisvariablen undefiniert!

Zum Beispiel liefert die Funktion scanf die Anzahl der korrekt gelesenen Werte als Funktionswert. Ist der Funktionswert ungleich der Anzahl der Umwandlungszeichen, so ist ein Fehler aufgetreten und ein oder mehrere Ergebnisvariablen sind undefiniert.

int v;
if (scanf("%d", &v)!=1) error();

Daher soll immer eine Konsistenzprüfung der Ergebnisvariablen erfolgen oder die Variable zumindest auf sinnvolle Standardwerte initialisiert werden, um ein undefiniertes Verhalten zu verhindern:

int v=0;
scanf("%d", &v);


Null-Pointer | | Zeiger auf Zeiger

Options: