In diesem Tutorial lernen Sie die Beziehung zwischen Arrays und Zeigern in der C-Programmierung kennen. Sie werden auch lernen, mit Zeigern auf Array-Elemente zuzugreifen.
Bevor Sie sich mit der Beziehung zwischen Arrays und Zeigern vertraut machen, sollten Sie diese beiden Themen überprüfen:
- C Arrays
- C Zeiger
Beziehung zwischen Arrays und Zeigern
Ein Array ist ein Block sequentieller Daten. Schreiben wir ein Programm zum Drucken von Adressen von Array-Elementen.
 #include int main() ( int x(4); int i; for(i = 0; i < 4; ++i) ( printf("&x(%d) = %p", i, &x(i)); ) printf("Address of array x: %p", x); return 0; ) 
Ausgabe
& x (0) = 1450734448 & x (1) = 1450734452 & x (2) = 1450734456 & x (3) = 1450734460 Adresse des Arrays x: 1450734448
Es gibt einen Unterschied von 4 Bytes zwischen zwei aufeinanderfolgenden Elementen des Arrays x. Dies liegt daran, dass die Größe von int4 Byte beträgt (auf unserem Compiler).
Beachten Sie, dass die Adresse von & x (0) und x gleich ist. Dies liegt daran, dass der Variablenname x auf das erste Element des Arrays zeigt.

Aus dem obigen Beispiel ist klar, dass dies &x(0)äquivalent zu x ist. Und x(0)ist gleichbedeutend mit *x.
Ähnlich,
- &x(1)ist äquivalent zu- x+1und- x(1)ist äquivalent zu- *(x+1).
- &x(2)ist äquivalent zu- x+2und- x(2)ist äquivalent zu- *(x+2).
- …
- Grundsätzlich &x(i)ist äquivalent zux+iundx(i)ist äquivalent zu*(x+i).
Beispiel 1: Zeiger und Arrays
 #include int main() ( int i, x(6), sum = 0; printf("Enter 6 numbers: "); for(i = 0; i < 6; ++i) ( // Equivalent to scanf("%d", &x(i)); scanf("%d", x+i); // Equivalent to sum += x(i) sum += *(x+i); ) printf("Sum = %d", sum); return 0; ) 
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
Geben Sie 6 Zahlen ein: 2 3 4 4 12 4 Summe = 29
Hier haben wir ein Array x von 6 Elementen deklariert. Für den Zugriff auf Elemente des Arrays haben wir Zeiger verwendet.
In den meisten Kontexten zerfallen Array-Namen in Zeiger. In einfachen Worten werden Array-Namen in Zeiger konvertiert. Aus diesem Grund können Sie Zeiger verwenden, um auf Elemente von Arrays zuzugreifen. Beachten Sie jedoch, dass Zeiger und Arrays nicht identisch sind .
Es gibt einige Fälle, in denen Array-Namen nicht in Zeiger zerfallen. Weitere Informationen finden Sie unter: Wann zerfällt der Array-Name nicht in einen Zeiger?
Beispiel 2: Arrays und Zeiger
 #include int main() ( int x(5) = (1, 2, 3, 4, 5); int* ptr; // ptr is assigned the address of the third element ptr = &x(2); printf("*ptr = %d ", *ptr); // 3 printf("*(ptr+1) = %d ", *(ptr+1)); // 4 printf("*(ptr-1) = %d", *(ptr-1)); // 2 return 0; )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
* ptr = 3 * (ptr + 1) = 4 * (ptr-1) = 2
In diesem Beispiel wird &x(2)die Adresse des dritten Elements dem ptr-Zeiger zugewiesen. Daher 3wurde beim Drucken angezeigt *ptr.
Und das Drucken *(ptr+1)gibt uns das vierte Element. In ähnlicher Weise *(ptr-1)gibt uns das Drucken das zweite Element.








