Menu
Coddy logo textTech

NULL-Zeiger

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 5 von 63.

Manchmal müssen Sie einen Pointer deklarieren, haben aber keine gültige Speicheradresse, die Sie ihm sofort zuweisen können. In diesen Situationen ist es wichtig, den Pointer mit einem speziellen Wert namens NULL zu initialisieren.

Ein NULL-Pointer ist ein Zeiger, der auf keine gültige Speicheradresse zeigt. In C wird NULL normalerweise als 0 oder (void*)0 definiert. Wenn Sie einen Zeiger mit NULL initialisieren, geben Sie explizit an, dass er momentan auf nichts Nützliches zeigt.

int *ptr = NULL;    // Initialisiere Pointer mit NULL
printf("%p", ptr);  // Dies wird 0 oder (nil) ausgeben

Das Initialisieren von Pointern auf NULL gilt als gute Programmierpraxis, da es verhindert, dass Ihr Pointer zufällige Garbage-Werte enthält. Ein nicht initialisierter Pointer könnte eine beliebige zufällige Speicheradresse enthalten, was zu unvorhersehbarem Verhalten führen kann, wenn Sie versehentlich versuchen, ihn zu verwenden.

Sie können prüfen, ob ein Pointer NULL ist, bevor Sie ihn verwenden, was dazu beiträgt, Abstürze zu verhindern und Ihren Code robuster zu machen. Diese Sicherheitsprüfung wird besonders wichtig, wenn Ihre Programme komplexer werden.

challenge icon

Aufgabe

Einfach

Schreiben Sie ein C-Programm, das die korrekte Initialisierung und Überprüfung von NULL-Pointern demonstriert. Ihr Programm sollte:

  1. Einen Pointer auf einen Integer namens safe_ptr deklarieren und ihn mit NULL initialisieren
  2. Einen Pointer auf einen Character namens char_ptr deklarieren und ihn mit NULL initialisieren
  3. Mit einer if-Anweisung prüfen, ob safe_ptr NULL ist, und "safe_ptr is NULL" ausgeben, falls dies zutrifft
  4. Mit einer if-Anweisung prüfen, ob char_ptr NULL ist, und "char_ptr is NULL" ausgeben, falls dies zutrifft
  5. Die in safe_ptr gespeicherte Speicheradresse mit printf und dem Formatspezifizierer %p ausgeben
  6. Die in char_ptr gespeicherte Speicheradresse mit printf und dem Formatspezifizierer %p ausgeben

Ihre Ausgabe sollte die Ergebnisse im folgenden Format anzeigen:

safe_ptr is NULL
char_ptr is NULL
safe_ptr address: [address]
char_ptr address: [address]

Die tatsächlichen Speicheradressen werden je nach System als 0, (nil) oder eine ähnliche NULL-Darstellung angezeigt, aber das Format und die Bezeichnungen müssen exakt wie oben gezeigt übereinstimmen.

Spickzettel

Ein NULL-Pointer ist ein Zeiger, der auf keine gültige Speicheradresse zeigt. In C wird NULL normalerweise als 0 oder (void*)0 definiert.

Initialisieren Sie Pointer mit NULL, um zufällige Garbage-Werte zu vermeiden:

int *ptr = NULL;    // Pointer mit NULL initialisieren
printf("%p", ptr);  // Dies wird 0 oder (nil) ausgeben

Prüfen Sie, ob ein Pointer NULL ist, bevor Sie ihn verwenden, um Abstürze zu vermeiden:

if (ptr == NULL) {
    // Sicherer Umgang mit dem NULL-Fall
}

Probier es selbst

#include <stdio.h>

int main() {
    // TODO: Schreiben Sie hier Ihren Code
    // Deklarieren und initialisieren Sie Ihre Pointer
    // Überprüfen Sie, ob die Pointer NULL sind
    // Geben Sie die erforderliche Ausgabe aus
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow