Null-Pointer
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy. Lektion 4 von 56.
Wenn du einen pointer deklarierst, zeigt er nicht automatisch auf etwas Bedeutungsvolles. Ein nicht initialisierter pointer enthält zufällige Speicheradressen, was zu schwerwiegenden Fehlern führen kann, wenn du versuchst, ihn zu verwenden. Hier werden null pointer für eine sichere Programmierung unverzichtbar.
Ein null pointer ist ein pointer, der ausdrücklich auf nichts zeigt. In modernem C++ erstellst du einen null pointer, indem du ihn mit nullptr initialisierst:
int* ptr = nullptr; // ptr ist jetzt ein NullzeigerDas Schlüsselwort nullptr gibt an, dass der Zeiger auf keinen gültigen Speicherort zeigt. Dies ist wesentlich sicherer, als einen Zeiger nicht zu initialisieren, da du überprüfen kannst, ob ein Zeiger null ist, bevor du versuchst, ihn zu dereferenzieren.
Bevor du einen pointer verwendest, solltest du mit einer einfachen if-Anweisung überprüfen, dass er nicht null ist:
if (ptr != nullptr) {
// Hier ist es sicher, *ptr zu verwenden
int value = *ptr;
}Diese Vorgehensweise verhindert, dass dein Programm aufgrund des Zugriffs auf ungültige Speicherstellen abstürzt. Initialisiere Zeiger immer mit nullptr, wenn du sie deklarierst, und prüfe vor dem Dereferenzieren auf null.
Aufgabe
EinfachErstelle ein Programm, das die sichere Verwendung von Zeigern demonstriert, indem es vor ihrer Dereferenzierung auf Nullzeiger prüft.
Die folgende Eingabe wird bereitgestellt:
- Eine Zeichenkette, die entweder
"valid"oder"null"ist
Dein Programm sollte:
- Eine Ganzzahlvariable namens
datadeklarieren und mit dem Wert42initialisieren - Einen Zeiger namens
ptrdeklarieren - Wenn die Eingabe
"valid"ist, die Adresse vondataptrzuweisen - Wenn die Eingabe
"null"ist,nullptrptrzuweisen - Eine if-Anweisung verwenden, um zu prüfen, ob
ptrnicht null ist, bevor versucht wird, ihn zu verwenden - Wenn der Zeiger nicht null ist, den Wert ausgeben, auf den er zeigt
- Wenn der Zeiger null ist, eine Sicherheitsmeldung ausgeben
Verwende das folgende exakte Ausgabeformat:
Value: [value]Für Nullzeiger verwende dieses Format:
Pointer is null - cannot dereferenceProbier es selbst
#include <iostream>
#include <string>
using namespace std;
int main() {
// Eingabe lesen
string input;
cin >> input;
// Deklariere die data-Variable
int data = 42;
// TODO: Schreibe deinen Code hier
// - Deklariere einen Zeiger namens ptr
// - Überprüfe die Eingabe und weise ptr einen geeigneten Wert zu
// - Verwende eine if-Anweisung, um den Zeiger 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Übe selbstständig: Online-C++-Compiler