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

De relatie tussen arrays en pointers in C begrijpen

Relatie tussen arrays en pointers

In deze tutorial leer je over de relatie tussen arrays en pointers in C-programmeren. Je leert ook array-elementen benaderen met pointers.

Voordat je leert over de relatie tussen arrays en pointers, zorg dat je deze twee onderwerpen kent:

  • C Arrays
  • C Pointers

Relatie tussen arrays en pointers

Een array is een blok van opeenvolgende data. Laten we een programma schrijven dat adressen van array-elementen print.

#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("Adres van array x: %p", x);
    return 0;
}

Output

&x[0] = 1450734448
&x[1] = 1450734452
&x[2] = 1450734456
&x[3] = 1450734460
Adres van array x: 1450734448

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

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

De relatie tussen arrays en pointers in C begrijpen

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

Op dezelfde manier:

  • &x[1] is equivalent aan x+1 en x[1] is equivalent aan *(x+1).
  • &x[2] is equivalent aan x+2 en x[2] is equivalent aan *(x+2).
  • ...
  • In het algemeen: &x[i] is equivalent aan x+i en x[i] is equivalent aan *(x+i).

Voorbeeld 1: Pointers en arrays

#include <stdio.h>
int main() {
    int i, x[6], sum = 0;
    printf("Voer 6 getallen in: ");
    for(i = 0; i < 6; ++i) {
        // Equivalent aan scanf("%d", &x[i]);
        scanf("%d", x+i);
        // Equivalent aan sum += x[i]
        sum += *(x+i);
    }
    printf("Som = %d", sum);
    return 0;
}

Wanneer je het programma runt, is de output:

Voer 6 getallen in: 2 3 4 4 12 4
Som = 29

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


In de meeste contexten vervallen arraynamen naar pointers. In simpele woorden: arraynamen worden geconverteerd naar pointers. Dat is de reden waarom je pointers kunt gebruiken om toegang te krijgen tot elementen van arrays. Je moet echter onthouden dat pointers en arrays niet hetzelfde zijn.

Er zijn een paar gevallen waar arraynamen niet vervallen naar pointers. Lees meer: Wanneer vervalt een arraynaam niet naar een pointer?


Voorbeeld 2: Arrays en pointers

#include <stdio.h>
int main() {
    int x[5] = {1, 2, 3, 4, 5};
    int* ptr;
    // ptr krijgt het adres van het derde 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 je het programma runt, is de output:

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

In dit voorbeeld wordt &x[2], het adres van het derde element, toegewezen aan de ptr pointer. Daarom werd 3 getoond toen we *ptr printten.

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

C Taal

  1. Spanning-stroom onbalans in elektrische motoren begrijpen: oorzaken en troubleshooting
  2. Operaties-Onderhoud Collaboratie Verbeteren voor Superieure Productieresultaten
  3. Hardlossen vs. Solderen: Belangrijkste Verschillen Uitgelegd
  4. 2-Takt vs 4-Takt Motoren: Belangrijkste Verschillen Uitgelegd
  5. SCADA vs. HMI: Belangrijke verschillen en hun rol in Industrie 4.0
  6. DC vs AC Motoren Begrijpen: Belangrijkste Verschillen en Kookgids
  7. Big Data en Cloud Computing: Hoe Ze Samenwerken
  8. Hoe IoT en Edge Computing Elkaar Aanvullen
  9. C++ Pointers en Arrays: De relatie meesteren
  10. C-programmeren: Adressen & pointers doorgeven aan functies – Een praktische gids
  11. C Structs en Pointers onder de knie krijgen: Een praktische gids