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-PointerDas 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.
Aufgabe
EinfachErstellen 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:
- Eine Integer-Variable namens
datadeklarieren und sie mit dem Wert42initialisieren - Einen Pointer namens
ptrdeklarieren - Wenn die Eingabe
"valid"ist, weisen Sieptrdie Adresse vondatazu - Wenn die Eingabe
"null"ist, weisen Sieptrden Wertnullptrzu - Verwenden Sie eine if-Anweisung, um zu prüfen, ob
ptrnicht null ist, bevor Sie versuchen, ihn zu verwenden - Wenn der Pointer nicht null ist, geben Sie den Wert aus, auf den er zeigt
- 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 dereferenceSpickzettel
Initialisieren Sie Zeiger auf nullptr, um undefiniertes Verhalten zu vermeiden:
int* ptr = nullptr; // ptr ist jetzt ein Null-ZeigerPrü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;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Pointer und Speicher
Was ist ein Pointer?AdressoperatorDereferenzierungsoperatorNull-PointerPointer und ArraysDynamischer Speicher mit 'new'Speicher freigeben mit 'delete'Zusammenfassung – Pointer-Übung2Vektoren (Dynamische Arrays)
Einführung in std::vectorEinen Vector erstellenElemente hinzufügenAuf Elemente zugreifenVector-GrößeIterieren mit einer For-SchleifeRange-based For-SchleifeElemente entfernenZusammenfassung – Vector-Operationen3Projekt: Aufgabenlisten-Tool
ProjektübersichtEine Aufgabe hinzufügen