0Pricing
C++ Academy · Lektion

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;   // 100

Der 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;   // 3

Grundlagen 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;   // 30

Ein 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;  // 5

Zeiger 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

  1. Rohe Zeiger und der Adressoperator
  2. Dereferenzierung und Zeigerarithmetik
  3. nullptr und Sicherheit bei Nullzeigern
  4. Wann Zeiger und wann Referenzen?
← Zurück zu C++ Academy