Next: Passage de structures en
Up: Structures, unions et énumérations
Previous: Structures dont un des
Supposons que nous ayons déclaré p comme étant de type pointeur
vers une
struct personne, comment écrire une référence à un membre de
la structure pointée par p ?
Étant donné que *p désigne la structure, on serait tenté d'écrire
*p.nom pour référencer le membre nom.
Mais il faut savoir que les opérateurs d'indirection (*) et de sélection (.),
tout comme les opérateurs arithmétiques, ont une priorité.
Et il se trouve que l'indirection a une priorité inférieure à celle de la
sélection.
Ce qui fait que *p.nom sera interprété comme signifiant *(p.nom).
(Cela aurait un sens si p était une structure dont un des membres
s'appelait nom et était un pointeur).
Dans notre cas, il faut écrire (*p).nom pour forcer
l'indirection à se faire avant la sélection.
Cette écriture étant assez lourde, le langage C a prévu un
nouvel opérateur noté -> qui réalise à la fois l'indirection et
la sélection : p -> nom est identique à (*p).nom.
Exemple :
si p est de type pointeur vers la struct personne définie
précédemment, pour
affecter une valeur au membre no_employe de la structure pointée par
p, on peut écrire :
p -> no_employe = 13456;
Next: Passage de structures en
Up: Structures, unions et énumérations
Previous: Structures dont un des
Bernard Cassagne
1998-12-09