Programmer en langage C
128
© Éditions Eyrolles
Bien entendu, ici, nous aurions obtenu le même résultat avec :
n = 30 ;
4.2 Quelques exemples
Voici quelques exemples d’utilisation de ces deux opérateurs. Supposez que nous ayons effectué
ces déclarations :
int * ad1, * ad2, * ad ;
int n = 10, p = 20 ;
Les variables ad1, ad2 et ad sont donc des pointeurs sur des entiers. Remarquez bien la
forme de la déclaration, en particulier, si l’on avait écrit :
int * ad1, ad2, ad ;
la variable ad1 aurait bien été un pointeur sur un entier (puisque *ad1 est entier) mais ad2 et
ad auraient été, quant à eux, des entiers.
Considérons maintenant ces instructions :
ad1 = &n ;
ad2 = &p ;
* ad1 = * ad2 + 2 ;
Les deux premières placent dans ad1 et ad2 les adresses de n et p. La troisième affecte à
*ad1 la valeur de l’expression :
* ad2 + 2
Autrement dit, elle place à l’adresse désignée par ad1 la valeur (entière) d’adresse ad2,
augmentée de 2. Cette instruction joue donc ici le même rôle que :
n = p + 2 ;
De manière comparable, l’expression :
* ad1 += 3
jouerait le même rôle que :
n = n + 3
et l’expression :
( * ad1 ) ++
jouerait le même rôle que n++ (nous verrons plus loin que, sans les parenthèses, cette expression
aurait une signification différente).
Delannoy Livre.book Page 128 Mercredi, 6. mai 2009 4:26 16
128
© Éditions Eyrolles
Bien entendu, ici, nous aurions obtenu le même résultat avec :
n = 30 ;
4.2 Quelques exemples
Voici quelques exemples d’utilisation de ces deux opérateurs. Supposez que nous ayons effectué
ces déclarations :
int * ad1, * ad2, * ad ;
int n = 10, p = 20 ;
Les variables ad1, ad2 et ad sont donc des pointeurs sur des entiers. Remarquez bien la
forme de la déclaration, en particulier, si l’on avait écrit :
int * ad1, ad2, ad ;
la variable ad1 aurait bien été un pointeur sur un entier (puisque *ad1 est entier) mais ad2 et
ad auraient été, quant à eux, des entiers.
Considérons maintenant ces instructions :
ad1 = &n ;
ad2 = &p ;
* ad1 = * ad2 + 2 ;
Les deux premières placent dans ad1 et ad2 les adresses de n et p. La troisième affecte à
*ad1 la valeur de l’expression :
* ad2 + 2
Autrement dit, elle place à l’adresse désignée par ad1 la valeur (entière) d’adresse ad2,
augmentée de 2. Cette instruction joue donc ici le même rôle que :
n = p + 2 ;
De manière comparable, l’expression :
* ad1 += 3
jouerait le même rôle que :
n = n + 3
et l’expression :
( * ad1 ) ++
jouerait le même rôle que n++ (nous verrons plus loin que, sans les parenthèses, cette expression
aurait une signification différente).
Delannoy Livre.book Page 128 Mercredi, 6. mai 2009 4:26 16
