Pointeurs dans le programme en C

Bonjour,

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

2 réponses

  1. Contributeur Ambassadeur
    bonjour,
    suggestion
    0
    1. Contributeur
      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