Beziehung zwischen Arrays und Zeigern
Beziehung zwischen Arrays und Zeigern
In diesem Tutorial lernen Sie die Beziehung zwischen Arrays und Zeigern in der C-Programmierung kennen. Außerdem erfahren Sie, wie Sie mit Zeigern auf Array-Elemente zugreifen.
Bevor Sie mehr über die Beziehung zwischen Arrays und Zeigern erfahren, lesen Sie unbedingt diese beiden Themen:
- C-Arrays
- C-Zeiger
Beziehung zwischen Arrays und Zeigern
Ein Array ist ein Block sequentieller Daten. Lassen Sie uns ein Programm schreiben, um Adressen von Array-Elementen auszugeben.
#include <stdio.h>
int main() {
int x[4];
int i;
for(i = 0; i < 4; ++i) {
printf("&x[%d] = %p\n", 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 Address of array x: 1450734448
Zwischen zwei aufeinanderfolgenden Elementen des Arrays x besteht ein Unterschied von 4 Bytes . Das liegt an der Größe von int
ist 4 Bytes (auf unserem Compiler).
Beachten Sie, dass die Adresse von &x[0] und x ist dasselbe. Das liegt daran, dass der Variablenname x zeigt auf das erste Element des Arrays.

Aus dem obigen Beispiel geht hervor, dass &x[0]
entspricht x . Und x[0]
entspricht *x
.
Ebenso
&x[1]
entsprichtx+1
undx[1]
entspricht*(x+1)
.&x[2]
entsprichtx+2
undx[2]
entspricht*(x+2)
.- ...
- Grundsätzlich
&x[i]
entsprichtx+i
undx[i]
entspricht*(x+i)
.
Beispiel 1:Zeiger und Arrays
#include <stdio.h>
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:
Enter 6 numbers: 2 3 4 4 12 4 Sum = 29
Hier haben wir ein Array x deklariert aus 6 Elementen. Um auf Elemente des Arrays zuzugreifen, haben wir Zeiger verwendet.
In den meisten Kontexten zerfallen Array-Namen zu Zeigern. In einfachen Worten, Array-Namen werden in Zeiger umgewandelt. Aus diesem Grund können Sie Zeiger verwenden, um auf Elemente von Arrays zuzugreifen. Beachten Sie jedoch, dass Zeiger und Arrays nicht dasselbe sind .
Es gibt einige Fälle, in denen Array-Namen nicht in Zeiger zerfallen. Um mehr zu erfahren, besuchen Sie:Wann zerfällt der Array-Name nicht in einen Zeiger?
Beispiel 2:Arrays und Zeiger
#include <stdio.h>
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 \n", *ptr); // 3
printf("*(ptr+1) = %d \n", *(ptr+1)); // 4
printf("*(ptr-1) = %d", *(ptr-1)); // 2
return 0;
}
Wenn Sie das Programm ausführen, lautet die Ausgabe:
*ptr = 3 *(ptr+1) = 4 *(ptr-1) = 2
In diesem Beispiel &x[2]
, die Adresse des dritten Elements, wird dem ptr zugewiesen Zeiger. Daher 3
wurde angezeigt, als wir *ptr
druckten .
Und *(ptr+1)
drucken gibt uns das vierte Element. Ebenso wird *(ptr-1)
gedruckt gibt uns das zweite Element.
C Sprache
- Welche Beziehung besteht zwischen Big Data und Cloud Computing?
- C++-Zeiger und Arrays
- C Übergeben Sie Adressen und Zeiger
- C-Strukturen und Zeiger
- Die Beziehung zwischen Spannung und Strom in Elektromotoren
- Die Beziehung zwischen IoT und Edge Computing
- Unterschiede zwischen SCADA und HMI
- Der Unterschied zwischen Gleichstrom- und Wechselstrommotoren
- Unterschied zwischen Hartlöten und Weichlöten
- Unterschied zwischen 2-Takt- und 4-Takt-Motoren