Pointeurs dans le programme en C

lili -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'aimerai savoir ce que c'est qu'un pointeur s'il vous plaie.

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    suggestion
    0
  2. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Bonjour lili,

    Essentiellement, un pointeur en C est une variable, qui permet de stocker une adresse mémoire.

    int a = 10;
    int * b;
    
    b = &a;
    /* b contient maintenant l'adresse mémoire de la variable a */


    Une variable pointeur permet d'accéder indirectement au contenu vers lequel l'adresse qu'elle contient pointe. De ce fait, les pointeurs sont typés. Dans l'exemple ci-dessus,
    b
    est déclaré comme une variable pointeur sur des données de type
    int
    .

    printf("Le contenu de a est : \n", *b);


    Une autre utilisation commune des pointeurs est dans le cadre de l'allocation dynamique de mémoire avec
    malloc()
    . La variable pointeur permet de stocker l'adresse de la zone mémoire réservée par
    malloc()
    , d'accéder indirectement à son contenu, et de conserver cette adresse mémoire pour la fournir à
    free()
    lorsqu'on voudra la libérer.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main (void) {
        int * dix_entiers;
    
        dix_entiers = malloc (sizeof(int) * 10);
        if (dix_entiers == NULL) {
            /* gérer l'erreur */
        } else {
            for (int i = 0; i < 10; i++)
                dix_entiers[i] = i;
            printf("le 3ème élément est : %d\n", dix_entiers[2]);
            printf("le 3ème élément est : %d\n", *(dix_entiers + 2));
            free (dix_entiers);
        }
        
        return 0;
    }


    Dans l'exemple ci-dessus
    *(dix_entiers + 2)
    illustre une autre utilisation des pointeurs qui est l'arithmétique de pointeurs. Cette expression signifie le contenu (de type
    int
    ) présent à l'adresse mémoire égale à celle contenue dans la variable
    dix_entiers
    et à laquelle on ajoute de 2 fois la taille d'un
    int
    .

    Il y a d'autres finesses, mais ce sont les caractéristiques essentielles.

    Dal
    0