Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

Beziehung zwischen Arrays und Zeigern in C verstehen

Beziehung zwischen Arrays und Zeigern

In diesem Tutorial lernen Sie die Beziehung zwischen Arrays und Zeigern in der C-Programmierung kennen. Sie erfahren auch, wie Sie mit Zeigern auf Array-Elemente zugreifen.

Bevor Sie die Beziehung zwischen Arrays und Zeigern lernen, sollten Sie diese beiden Themen prüfen:


Beziehung zwischen Arrays und Zeigern

Ein Array ist ein Block sequentieller Daten. Schreiben wir ein Programm, das die Adressen der Array-Elemente ausgibt.

#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

Es gibt einen Unterschied von 4 Bytes zwischen zwei aufeinanderfolgenden Elementen des Arrays x. Das liegt daran, dass die Größe von int 4 Bytes beträgt (auf unserem Compiler).

Beachten Sie, dass die Adresse von &x[0] und x identisch ist. Das liegt daran, dass der Variablenname x auf das erste Element des Arrays verweist.

Beziehung zwischen Arrays und Zeigern in C verstehen

Aus dem obigen Beispiel geht hervor, dass &x[0] äquivalent zu x ist. Und x[0] ist äquivalent zu *x.

Ebenso:


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) {
        // Äquivalent zu scanf("%d", &x[i]);
        scanf("%d", x+i);
        // Äquivalent zu 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 mit 6 Elementen deklariert. Um auf die Elemente des Arrays zuzugreifen, haben wir Zeiger verwendet.


In den meisten Kontexten zerfallen Arraynamen zu Zeigern. Einfach ausgedrückt: Arraynamen werden in Zeiger konvertiert. Deshalb können Sie Zeiger verwenden, um auf Array-Elemente zuzugreifen. Sie sollten sich jedoch merken, dass Zeiger und Arrays nicht dasselbe sind.

Es gibt einige Fälle, in denen Arraynamen nicht zu Zeigern zerfallen. Um mehr zu erfahren, besuchen Sie: Wann zerfällt ein Arrayname 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 wird die Adresse des dritten Elements zugewiesen
    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 wird &x[2], die Adresse des dritten Elements, dem ptr-Zeiger zugewiesen. Daher wurde 3 angezeigt, als wir *ptr ausgaben.

Und die Ausgabe von *(ptr+1) gibt uns das vierte Element. Ebenso gibt die Ausgabe von *(ptr-1) das zweite Element.

C Sprache

  1. Big Data und Cloud Computing: Wie sie zusammenarbeiten
  2. C++ Zeiger und Arrays: Die Beziehung meistern
  3. C-Programmierung: Adressen & Zeiger an Funktionen übergeben – Praxisleitfaden
  4. C-Structs und Zeiger meistern: Praxisleitfaden
  5. Spannungs-Strom-Ungleichgewicht bei Elektromotoren verstehen: Ursachen und Fehlersuche
  6. Wie IoT und Edge Computing sich gegenseitig ergänzen
  7. SCADA vs. HMI: Wesentliche Unterschiede und ihre Rolle in Industry 4.0
  8. DC- vs. AC-Motoren: Wichtige Unterschiede & Kaufberatung
  9. Hartlöten vs. Weichlöten: Metallurgische Unterschiede und Praxiseinsatz
  10. Zweitakt- vs. Viertaktmotoren: Wichtige Unterschiede erklärt