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 Sinnvolles. 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 sicheres Programmieren 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 pointer auf keinen valid Speicherort zeigt. Das ist wesentlich sicherer, als einen pointer nicht zu initialisieren, da du überprüfen kannst, ob ein pointer null ist, bevor du versuchst, ihn zu dereference.
Bevor du einen pointer verwendest, solltest du mithilfe 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 Praxis verhindert, dass dein Programm aufgrund des Zugriffs auf ungültige Speicherstellen abstürzt. Initialisiere pointer immer mit nullptr, wenn du sie deklarierst, und check vor dem dereference auf null.
Aufgabe
EinfachErstelle ein Programm, das die sichere Verwendung von pointer demonstriert, indem es vor dem Dereferenzieren auf null pointer prüft.
Die folgende input wird bereitgestellt:
- Ein string, der entweder
"valid"oder"null"lautet
Dein Programm sollte:
- Eine Ganzzahl-
variablenamensdatadeklarieren und mit dem Wert42initialisieren - Einen pointer namens
ptrdeklarieren - Wenn die input
"valid"lautet, die Adresse vondataptrassign - Wenn die input
"null"lautet,nullptrptrassign - Ein if-statement verwenden, um zu prüfen, ob
ptrnicht null ist, bevor versucht wird, ihn zu verwenden - Wenn der pointer nicht null ist, den Wert ausgeben, auf den er zeigt
- Wenn der pointer null ist, eine Sicherheitsmeldung ausgeben
Verwende das folgende exakte Ausgabeformat:
Value: [value]Für null pointer 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