Dereferenzierung und Zeigerarithmetik
Lesen Sie Speicher über Zeiger aus und durchlaufen Sie Arrays mit Zeigerarithmetik.
Dereferenzierung und Zeigerarithmetik ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Über einen Zeiger lesen
Der unäre Operator * liest den Wert, auf den der Zeiger zeigt.
int x = 42;
int* p = &x;
std::cout << *p; // 42Über einen Zeiger schreiben
Sie können *p auch auf der linken Seite einer Zuweisung verwenden, um in das Ziel zu schreiben.
*p = 100;
std::cout << x; // 100Der Pfeiloperator
Bei Zeigern auf Strukturen oder Klassen ist p->member eine Kurzform für (*p).member. Verwenden Sie den Pfeil – das ist die übliche Schreibweise.
struct Point { int x, y; };
Point pt{3, 4};
Point* p = &pt;
std::cout << p->x; // 3Grundlagen der Zeigerarithmetik
Sie können zu Zeigern Ganzzahlen addieren oder von ihnen subtrahieren. Das Ergebnis bewegt sich in Schritten von Elementgröße – nicht in Bytes.
int a[5] = {10, 20, 30, 40, 50};
int* p = a; // points to a[0]
p = p + 2; // now points to a[2]
std::cout << *p; // 30Ein Array durchlaufen
Zeigerarithmetik bildet die Indizierung nach. a[i] und *(a + i) sind identisch – und p[i] funktioniert mit jedem Zeiger.
int a[] = {1, 2, 3, 4};
int* p = a;
for (int i = 0; i < 4; ++i) {
std::cout << *(p + i) << " ";
}Differenz zweier Zeiger
Wenn Sie zwei Zeiger innerhalb desselben Arrays subtrahieren, erhalten Sie den Abstand in Elementen – der Typ ist std::ptrdiff_t.
int a[5];
int* first = a;
int* last = a + 5;
std::ptrdiff_t len = last - first; // 5Zeiger vergleichen
Sie können Zeiger mit == und != auf Gleichheit vergleichen und mit < ordnen, aber nur, wenn sie auf Elemente desselben Arrays zeigen.
Mit Zeigern iterieren
Bei einer idiomatischen Iteration im C-Stil werden zwei Zeiger verwendet – Anfang und Ende.
int a[] = {1, 2, 3, 4, 5};
for (int* p = a; p != a + 5; ++p) {
std::cout << *p << " ";
}Hinter das Ende zeigen ist erlaubt
Sie dürfen einen Zeiger auf die Position direkt hinter dem letzten Element berechnen (den „Endzeiger“) – ihn zu dereferenzieren ist jedoch undefiniertes Verhalten.
Fallstricke der Zeigerarithmetik
Häufige Fehler:
- Über die Array-Grenzen hinausgehen
- Zeigertypen mischen (
int*+char*) - Vergessen, dass die Arithmetik in Elementeinheiten und nicht in Bytes erfolgt
Iteratoren oder Ranges bevorzugen
Modernes C++ bevorzugt Iteratoren und die Ranges-Bibliothek gegenüber roher Zeigerarithmetik. Zeiger bleiben für C-APIs und sehr hardwarenahe Programmierung wichtig.
Kurzer Test
Wenn p ein int* ist, der auf den Anfang eines 4 Byte großen int zeigt, worauf zeigt dann p + 1?
Zusammenfassung
*p liest oder beschreibt das Ziel. p->member greift auf einen Strukturmember zu. Zeigerarithmetik bewegt sich in Schritten von Elementgröße. Verwenden Sie sie mit Vorsicht – Iteratoren und Ranges sind in modernem Code meistens die sicherere Wahl.
Häufig gestellte Fragen
Ist die Lektion „Dereferenzierung und Zeigerarithmetik“ kostenlos?
Ja — der vollständige Text von „Dereferenzierung und Zeigerarithmetik“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Dereferenzierung und Zeigerarithmetik“?
Lesen Sie Speicher über Zeiger aus und durchlaufen Sie Arrays mit Zeigerarithmetik. Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C++ Academy zu starten?
Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Dereferenzierung und Zeigerarithmetik“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?
Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Rohe Zeiger und der Adressoperator
- Dereferenzierung und Zeigerarithmetik
- nullptr und Sicherheit bei Nullzeigern
- Wann Zeiger und wann Referenzen?