IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
next up previous contents index
Next: Passage de structures en Up: Structures, unions et énumérations Previous: Structures dont un des

Accès aux éléments d'une structure pointée

     

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 up previous contents index
Next: Passage de structures en Up: Structures, unions et énumérations Previous: Structures dont un des
Bernard Cassagne
1998-12-09