Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

Relatie tussen arrays en pointers

Relatie tussen arrays en pointers

In deze zelfstudie leert u over de relatie tussen arrays en pointers in C-programmering. Je leert ook toegang te krijgen tot array-elementen met behulp van pointers.

Voordat u meer te weten komt over de relatie tussen arrays en pointers, moet u deze twee onderwerpen controleren:

  • C-matrices
  • C-aanwijzers

Relatie tussen arrays en pointers

Een array is een blok sequentiële gegevens. Laten we een programma schrijven om adressen van array-elementen af ​​te drukken.

#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;
}

Uitvoer

&x[0] = 1450734448
&x[1] = 1450734452
&x[2] = 1450734456
&x[3] = 1450734460
Address of array x: 1450734448

Er is een verschil van 4 bytes tussen twee opeenvolgende elementen van array x . Het is omdat de grootte van int is 4 bytes (op onze compiler).

Merk op dat het adres van &x[0] en x is hetzelfde. Het is omdat de variabelenaam x wijst naar het eerste element van de array.

Uit het bovenstaande voorbeeld is het duidelijk dat &x[0] is gelijk aan x . En, x[0] is gelijk aan *x .

Evenzo,

  • &x[1] is gelijk aan x+1 en x[1] is gelijk aan *(x+1) .
  • &x[2] is gelijk aan x+2 en x[2] is gelijk aan *(x+2) .
  • ...
  • Kortom, &x[i] is gelijk aan x+i en x[i] is gelijk aan *(x+i) .

Voorbeeld 1:Pointers en 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;
}

Wanneer u het programma uitvoert, is de uitvoer:

Enter 6 numbers: 2
3
4
4
12
4
Sum = 29 

Hier hebben we een array gedeclareerd x van 6 elementen. Om toegang te krijgen tot elementen van de array, hebben we pointers gebruikt.


In de meeste contexten vervallen arraynamen tot pointers. In eenvoudige bewoordingen worden arraynamen omgezet in pointers. Dat is de reden waarom u pointers kunt gebruiken om toegang te krijgen tot elementen van arrays. Onthoud echter dat pointers en arrays niet hetzelfde zijn .

Er zijn een paar gevallen waarin arraynamen niet vervallen tot pointers. Ga voor meer informatie naar:Wanneer vervalt de arraynaam niet in een aanwijzer?


Voorbeeld 2:arrays en pointers

#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;
}

Wanneer u het programma uitvoert, is de uitvoer:

*ptr = 3 
*(ptr+1) = 4 
*(ptr-1) = 2

In dit voorbeeld &x[2] , het adres van het derde element, wordt toegewezen aan de ptr wijzer. Vandaar, 3 werd weergegeven toen we *ptr . afdrukten .

En, afdrukken *(ptr+1) geeft ons het vierde element. Op dezelfde manier printen *(ptr-1) geeft ons het tweede element.


C Taal

  1. Wat is de relatie tussen big data en cloud computing?
  2. C++-aanwijzers en arrays
  3. C Pass-adressen en -wijzers
  4. C-structuren en aanwijzers
  5. De relatie tussen spanning en stroom in elektromotoren
  6. De relatie tussen bewerking en onderhoud verbeteren
  7. De relatie tussen IoT en edge computing
  8. Verschillen tussen SCADA en HMI
  9. Het verschil tussen gelijkstroom- en wisselstroommotoren
  10. Verschil tussen solderen en solderen
  11. Verschil tussen 2-takt en 4-takt motoren