Pointer und Arrays
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 5 von 56.
Arrays und Pointer haben in C++ eine besondere Beziehung. Wenn Sie ein Array deklarieren, fungiert der Name des Arrays tatsächlich als Pointer auf das erste Element dieses Arrays. Diese Verbindung ermöglicht es Ihnen, Pointer zu verwenden, um auf leistungsstarke Weise mit Arrays zu arbeiten.
Betrachten Sie diese Array-Deklaration:
int numbers[5] = {10, 20, 30, 40, 50};
int* ptr = numbers; // ptr zeigt nun auf numbers[0]Hier ist numbers äquivalent zu &numbers[0] – beide geben Ihnen die Adresse des ersten Elements. Der Zeiger ptr zeigt nun auf denselben Speicherort.
Sobald Sie einen Pointer auf ein Array haben, können Sie Pointer-Arithmetik verwenden, um durch die Elemente zu navigieren. Das Addieren von 1 zu einem Pointer bewegt diesen zum nächsten Element desselben Typs:
ptr++; // Zeigt jetzt auf numbers[1]
ptr = ptr + 2; // Zeigt jetzt auf numbers[3]Sie können den Pointer an jeder beliebigen Position dereferenzieren, um auf den Wert zuzugreifen: *ptr liefert Ihnen den Wert an der aktuellen Position, und *(ptr + 1) liefert Ihnen den Wert des nächsten Elements.
Diese Zeiger-Array-Beziehung ermöglicht es Ihnen, durch Arrays unter Verwendung von Zeigern anstelle von herkömmlichen indexbasierten Schleifen zu iterieren, was einen alternativen Ansatz zum Durchlaufen von Arrays bietet.
Aufgabe
EinfachErstellen Sie ein Programm, das einen Pointer verwendet, um durch ein Array zu iterieren und jedes Element auszugeben, um die Beziehung zwischen Pointern und Arrays zu demonstrieren.
Ihnen wird das folgende Array zur Verfügung gestellt:
int values[6] = {15, 23, 8, 42, 17, 31};Ihr Programm sollte:
- Einen Pointer namens
ptrerstellen, der auf das erste Element desvaluesArrays zeigt - Pointer-Arithmetik verwenden, um durch alle 6 Elemente des Arrays zu iterieren
- Jedes Element durch Dereferenzierung des Pointers an jeder Position ausgeben
- Den Pointer mithilfe von Pointer-Arithmetik zum nächsten Element bewegen (den Pointer inkrementieren)
Geben Sie jedes Element in einer separaten Zeile im folgenden Format aus:
Element: [value]Die Ausgabe sollte alle 6 Elemente in der Reihenfolge zeigen, in der sie im Array erscheinen, wobei der Zugriff über Pointer-Dereferenzierung anstatt über Array-Indizierung erfolgt.
Spickzettel
Array-Namen fungieren als Pointer auf das erste Element. Sie können einen Array-Namen direkt einem Pointer zuweisen:
int numbers[5] = {10, 20, 30, 40, 50};
int* ptr = numbers; // ptr zeigt auf numbers[0]Verwenden Sie Pointer-Arithmetik, um durch Array-Elemente zu navigieren:
ptr++; // Zum nächsten Element bewegen
ptr = ptr + 2; // Um 2 Elemente vorwärts bewegenDereferenzieren Sie den Pointer, um auf Werte zuzugreifen:
*ptr // Wert des aktuellen Elements
*(ptr + 1) // Wert des nächsten ElementsDies ermöglicht das Pointer-basierte Durchlaufen von Arrays als Alternative zu indexbasierten Schleifen.
Probier es selbst
#include <iostream>
using namespace std;
int main() {
// Gegebenes Array
int values[6] = {15, 23, 8, 42, 17, 31};
// TODO: Erstellen Sie einen Pointer namens 'ptr', der auf das erste Element des Arrays zeigt
// TODO: Verwenden Sie eine Schleife, um durch alle 6 Elemente mittels Pointer-Arithmetik zu iterieren
// TODO: Geben Sie jedes Element aus, indem Sie den Pointer dereferenzieren
// TODO: Bewegen Sie den Pointer mittels Pointer-Arithmetik zum nächsten Element
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