Implementieren der Zeigerinkrementierung für das Array-Durchlaufen
Im vorherigen Schritt haben wir auf Array-Elemente über den Ausdruck *(ptr + i)
zugegriffen. Obwohl dies einwandfrei funktioniert, bietet C eine kompaktere Möglichkeit, ein Array mit Zeigern zu durchlaufen: den Inkrementoperator (++
).
Wenn wir einen Zeiger inkrementieren, bewegt er sich an die nächste Speicheradresse, wobei die Größe des Datentyps, auf den er zeigt, berücksichtigt wird. Bei einem Integer-Zeiger bewegt sich der Zeiger beim Inkrementieren auf das nächste Ganzzahl-Element im Speicher.
Ändern wir unsere main.c
-Datei, um die Zeigerinkrementierung für das Array-Durchlaufen zu verwenden:
#include <stdio.h>
int main() {
printf("Array Traversal using Pointers\n\n");
// Declare and initialize an array of 5 integers
int arr[5] = {10, 20, 30, 40, 50};
// Declare and initialize a pointer to the first element of the array
int *ptr = arr; // Same as ptr = &arr[0]
// Print the array elements using pointer incrementation
printf("Array elements using pointer incrementation:\n");
for(int i = 0; i < 5; i++) {
printf("*ptr = %d\n", *ptr);
ptr++; // Move the pointer to the next element
}
// Reset the pointer to the beginning of the array
ptr = arr;
// Print all elements in a single line using pointer incrementation
printf("\nAll elements in a single line: ");
for(int i = 0; i < 5; i++) {
printf("%d ", *ptr++); // Print and then increment
}
printf("\n");
return 0;
}
In diesem aktualisierten Code:
- Wir initialisieren den Zeiger
ptr
direkt bei seiner Deklaration.
- Innerhalb der ersten Schleife verwenden wir
*ptr
, um auf das aktuelle Element zuzugreifen, und dann ptr++
, um zum nächsten Element zu gelangen.
- Nach der ersten Schleife setzen wir
ptr
wieder auf den Anfang des Arrays zurück.
- In der zweiten Schleife verwenden wir den Post-Inkrementoperator
*ptr++
, der zunächst den aktuellen Wert von ptr
verwendet und dann inkrementiert.
Kompilieren und führen Sie das Programm aus, um die Ergebnisse zu sehen:
gcc main.c -o main
./main
Sie sollten die folgende Ausgabe sehen:
Array Traversal using Pointers
Array elements using pointer incrementation:
*ptr = 10
*ptr = 20
*ptr = 30
*ptr = 40
*ptr = 50
All elements in a single line: 10 20 30 40 50
Dies zeigt, wie man die Zeigerinkrementierung verwendet, um ein Array zu durchlaufen. Der wichtigste Punkt ist, dass ptr++
automatisch die Größe des Datentyps berücksichtigt, wenn es zum nächsten Element wechselt.