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

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:


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] entspricht x+1 und x[1] entspricht *(x+1) .
  • &x[2] entspricht x+2 und x[2] entspricht *(x+2) .
  • ...
  • Grundsätzlich &x[i] entspricht x+i und x[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

  1. Welche Beziehung besteht zwischen Big Data und Cloud Computing?
  2. C++-Zeiger und Arrays
  3. C Übergeben Sie Adressen und Zeiger
  4. C-Strukturen und Zeiger
  5. Die Beziehung zwischen Spannung und Strom in Elektromotoren
  6. Die Beziehung zwischen IoT und Edge Computing
  7. Unterschiede zwischen SCADA und HMI
  8. Der Unterschied zwischen Gleichstrom- und Wechselstrommotoren
  9. Unterschied zwischen Hartlöten und Weichlöten
  10. Unterschied zwischen 2-Takt- und 4-Takt-Motoren