TP 6: Pointeurs et structures#
Rappels de cours#
Un pointeur permet d’accéder à une case de la mémoire par son adresse. Pour déclarer une variable de type pointeur on utilise la notation suivante :
int *p;
L’étoile indiquant que l’on défini un pointeur et le type int
indiquant le
type de la valeur pointée. Attention, pour déclarer plusieurs variable pointeurs
dans une seule déclaration il est nécessaire deplacer une étoile devant chaque
nom de variable :
int *p, *q;
Contrairement aux références, l’utilisation directe d’une variable pointeur permet de consulter ou de modifier l’adresse stockée dans la variable. Il est donc possible de changer la variable référencée par un pointeur :
p = &a;
Une valeur spéciale NULL
peut-être utilisée pour indiquer de manière
explicite qu’un pointeur ne contient pas d’adresse valide.
Afin d’accéder à la valeur pointeur pour la consulter ou la modifier, on utilise l’opérateur préfixe d’indirection :
*p = *p + 1;
Il est possible d’obtenir des pointeurs vers n’importe quel type de variable, par exemple vers une structure : (on suppose définie une structure point contenant deux entiers x et y)
point *pt = ...;
Dans le cas d’un pointeur vers une structure, l’acces aux membre de cette structure nécessite de déréférencer le pointeur. Une notation plus commode sous la forme d’une flèche est toutefois disponible :
(*pt).x
pt->x
Exercices#
Effectuez les exercices suivants dans l’ordre, en cochant les cases au fur et à mesure.