Menu
Coddy logo textTech

Null-Pointer

Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 4 von 56.

Wenn Sie einen Pointer deklarieren, zeigt dieser nicht automatisch auf etwas Sinnvolles. Ein nicht initialisierter Pointer enthält zufällige Speicheradressen, was zu schwerwiegenden Fehlern führen kann, wenn Sie versuchen, ihn zu verwenden. An dieser Stelle werden Null-Pointer für eine sichere Programmierung unverzichtbar.

Ein Null-Pointer ist ein Zeiger, der explizit auf nichts zeigt. In modernem C++ erstellen Sie einen Null-Pointer, indem Sie ihn mit nullptr initialisieren:

int* ptr = nullptr;  // ptr ist jetzt ein Null-Pointer

Das Schlüsselwort nullptr gibt an, dass der Pointer auf keinen gültigen Speicherort zeigt. Dies ist viel sicherer, als einen Pointer nicht initialisiert zu lassen, da Sie prüfen können, ob ein Pointer null ist, bevor Sie versuchen, ihn zu dereferenzieren.

Bevor Sie einen Pointer verwenden, sollten Sie mit einer einfachen if-Anweisung überprüfen, ob dieser nicht null ist:

if (ptr != nullptr) {
    // Hier kann *ptr sicher verwendet werden
    int value = *ptr;
}

Diese Praxis verhindert, dass Ihr Programm aufgrund des Zugriffs auf ungültige Speicherstellen abstürzt. Initialisieren Sie Pointer immer mit nullptr, wenn Sie diese deklarieren, und prüfen Sie auf Null, bevor Sie sie dereferenzieren.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das die sichere Verwendung von Pointern demonstriert, indem es auf Null-Pointer prüft, bevor diese dereferenziert werden.

Die folgende Eingabe wird bereitgestellt:

  • Ein String, der entweder "valid" oder "null" ist

Ihr Programm sollte:

  1. Eine Integer-Variable namens data deklarieren und sie mit dem Wert 42 initialisieren
  2. Einen Pointer namens ptr deklarieren
  3. Wenn die Eingabe "valid" ist, weisen Sie ptr die Adresse von data zu
  4. Wenn die Eingabe "null" ist, weisen Sie ptr den Wert nullptr zu
  5. Verwenden Sie eine if-Anweisung, um zu prüfen, ob ptr nicht null ist, bevor Sie versuchen, ihn zu verwenden
  6. Wenn der Pointer nicht null ist, geben Sie den Wert aus, auf den er zeigt
  7. Wenn der Pointer null ist, geben Sie eine Sicherheitsmeldung aus

Verwenden Sie das folgende exakte Ausgabeformat:

Value: [value]

Für Null-Pointer verwenden Sie dieses Format:

Pointer is null - cannot dereference

Spickzettel

Initialisieren Sie Zeiger auf nullptr, um undefiniertes Verhalten zu vermeiden:

int* ptr = nullptr;  // ptr ist jetzt ein Null-Zeiger

Prüfen Sie immer, ob ein Zeiger nicht null ist, bevor Sie ihn dereferenzieren:

if (ptr != nullptr) {
    // Hier kann *ptr sicher verwendet werden
    int value = *ptr;
}

Das Schlüsselwort nullptr gibt explizit an, dass der Zeiger auf keinen gültigen Speicherort zeigt, was Ihren Code sicherer macht und Abstürze durch den Zugriff auf ungültigen Speicher verhindert.

Probier es selbst

#include <iostream>
#include <string>
using namespace std;

int main() {
    // Eingabe lesen
    string input;
    cin >> input;
    
    // Die Datenvariable deklarieren
    int data = 42;
    
    // TODO: Schreiben Sie Ihren Code hier
    // - Deklarieren Sie einen Pointer namens ptr
    // - Überprüfen Sie die Eingabe und weisen Sie ptr den entsprechenden Wert zu
    // - Verwenden Sie eine if-Anweisung, um den Pointer sicher zu prüfen und zu verwenden
    
    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 Logik & Ablauf