next up previous
Next: Les références Up: La mémoire Previous: Variables, adresses et contenus

Les pointeurs

Un pointeur est une variable comme les autres, qui doit être déclarée, qui est associée à une case dans la mémoire et qui a donc une adresse, mais dont le contenu est particulier. En effet, au lieu de contenir une valeur comme un entier ou un caractère, un pointeur contient l'adresse d'une autre variable.

Par exemple si x est une variable de type int, dont l'adresse est &x, un pointeur p sur la variable x est une variable dont le contenu est &x. Bien évidemment, modifier le contenu de p (c-à-d modifier l'adresse qu'il stocke) ne change pas de place la variable x: dans ce cas, p pointera vers un autre endroit de la mémoire, c'est tout.

Dans le cas où p pointe sur x, pour connaître la valeur de x en ne connaissant que p il faudra donc faire *p, qui est de type int dans notre cas. Pour cette raison, le type de la variable p (qui est un pointeur vers un int) est int*. Pour déclarer p il faut donc taper:
int* p;
qui peut être comprise par le programmeur comme (int *) p (p est de type int*, c-à-d pointeur vers un int) ou int (* p) (le contenu de l'adresse stockée dans p est de type int). Puis pour lui affecter la valeur de x:
p = &x;
et enfin pour mettre le contenu de la case pointée par p dans un nouvel entier nommé y:
int y;
y = *p;
et ainsi les contenus de x et y seront similaires.

Attention: si l'on change maintenant la valeur de x, la valeur *p sera bien évidemment changée également puisque p pointe sur la case numéro &x. Par contre, cela ne changera pas la valeur de y puisque les cases numéro &x et &y sont deux cases distinctes qui n'ont aucun rapport sinon qu'il se trouve que leurs contenus sont (momentanément) identiques parce que l'on a écrit la même chose dans les deux.


next up previous
Next: Les références Up: La mémoire Previous: Variables, adresses et contenus
Guillaume Charpiat 2006-12-07