Pointeurs dans le programme en C
lili
-
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
[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.
J'aimerai savoir ce que c'est qu'un pointeur s'il vous plaie.
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
suggestion -
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 typeint
.
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 avecmalloc()
. La variable pointeur permet de stocker l'adresse de la zone mémoire réservée parmalloc()
, 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 typeint
) présent à l'adresse mémoire égale à celle contenue dans la variabledix_entiers
et à laquelle on ajoute de 2 fois la taille d'unint
.
Il y a d'autres finesses, mais ce sont les caractéristiques essentielles.
Dal