Retour Suite Index

9.2.2. Les opérations élémentaires sur pointeurs

En travaillant avec des pointeurs, nous devons observer les règles suivantes:

Priorité de

* et &

* Les opérateurs * et & ont la même priorité que les autres opérateurs unaires (la négation !, l'incrémentation ++, la décrémentation --). Dans une même expression, les opérateurs unaires *, &, !, ++, -- sont évalués de droite à gauche.

* Si un pointeur P pointe sur une variable X, alors *P peut être utilisé partout où on peut écrire X.

Exemple

Après l'instruction


   P = &X;

les expressions suivantes, sont équivalentes:

Y = *P+1


Y = X+1

*P = *P+10

X = X+10

*P += 2

X += 2

++*P

++X

(*P)++

X++

Attention!

Dans le dernier cas, les parenthèses sont nécessaires:

Comme les opérateurs unaires * et ++ sont évalués de droite à gauche, sans les parenthèses le pointeur P serait incrémenté, non pas l'objet sur lequel P pointe.

On peut uniquement affecter des adresses à un pointeur.

Le pointeur NUL

Seule exception: La valeur numérique 0 (zéro) est utilisée pour indiquer qu'un pointeur ne pointe 'nulle part'.


      int *P;
      P = 0;

Finalement, les pointeurs sont aussi des variables et peuvent être utilisés comme telles. Soit P1 et P2 deux pointeurs sur int, alors l'affectation


         P1 = P2;

copie le contenu de P2 vers P1. P1 pointe alors sur le même objet que P2.

Résumons:

Après les instructions:


   int A;
   int *P;
   P = &A;

A

désigne le contenu de A
&A
désigne l'adresse de A


P
désigne l'adresse de A
*P
désigne le contenu de A

En outre:

&P

désigne l'adresse du pointeur P
*A
est illégal (puisque A n'est pas un pointeur)

Retour Suite Index