mardi 17 mars 2015

langage C express: les pointeurs

Langage C : les pointeurs


Ben voilà une nouveauté les pointeurs
Pour être très rapide, on représente la mémoire comme un tableau.
Et le pointeur pointe vers un poste du tableau.
Dans le poste se trouve la donnée.

Bon alors le pointeur P1 pointe vers l'adresse 12349 qui contient 1515

C'est donc une complexification des tableaux pour s'amuser à se compliquer la vie alors qu'on peut faire plus simple ?
Non non.
Les pointeurs ont une réelle utilité:
par exemple, la durée de vie de la données n'est plus limitée à la durée de vie de la procédure qui la manipule, ou bien, on utilise rationnellement la mémoire, on ne réserve pas des zones pour rien.
A digérer ...

Il faut admettre dans un premier temps que c'est un peu compliqué, mais c'est vraiment utile, tout programmeur passe par cette étape, courage courage.

int dateMarignan = 1515;

le compilateur réserve une zone en mémoire qui contient 1515
Pour lire le contenu de ma zone on utilise la variable dateMarignan

Si on veut connaître l'adresse de la zone dans la mémoire on utilise &dateMarignan

Les pointeurs gèrent les adresses

on déclare un pointeur p1 vers une zone de type int
int * p1;

p1 = &dateMarignan // p1 pointe vers l'adresse de dateMarignan

*p1 permet d'accéder au contenu de l'adresse pointée par p1 soit 1515

Une erreur qu'on commet souvent c'est de manipuler les adresses croyant qu'on manipule le contenu:

p1 = p1 - 1

si p1 valait 12349, p1 vaut 12348
*p1 retourne 2 alors qu'on aurait pu croire avoir fait 1515 -1 = 1514

les commandes à connaître:

malloc : pour réserver de l'espace mémoire
new:  pour allouer un pointeur
free:  pour libérer de l'espace réservé lors du malloc

Nous publierons dans un prochain article un exemple de petit programme utilisant des pointeurs.


Aucun commentaire:

Enregistrer un commentaire