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;
Matthieu Moy 2017-02-08