Programmer en langage C
130
© Éditions Eyrolles
Notez bien que des expressions telles que ad+1 ou ad++ sont, en général, valides, quelle que
soit l’information se trouvant réellement à l’emplacement correspondant. D’autre part, il est
possible d’incrémenter ou de décrémenter un pointeur de n’importe quelle quantité entière.
Par exemple, avec la déclaration précédente de ad, nous pourrions écrire ces instructions :
ad += 10 ;
ad -= 25 ;
Il existera une exception à ces possibilités, à savoir le cas des pointeurs sur des fonctions,
dont nous parlerons plus loin (vous pouvez dès maintenant comprendre qu’incrémenter un
pointeur d’une quantité correspondant à la taille d’une fonction n’a pas de sens en soi !).
5 Comment simuler une transmission par adresse avec un pointeur
Nous avons vu que le mode de transmission par valeur semblait interdire à une fonction de
modifier la valeur de ses arguments effectifs et nous avions mentionné que les pointeurs fourniraient une solution à ce problème.
Nous sommes maintenant en mesure d’écrire une fonction effectuant la permutation des valeurs
de deux variables. Voici un programme qui réalise cette opération avec des valeurs entières :
Utilisation de pointeurs en argument d’une fonction
#include
main()
{
void echange (int * ad1, int * ad2) ;
int a=10, b=20 ;
printf ("avant appel %d %d\n", a, b) ;
echange (&a, &b) ;
printf ("après appel %d %d", a, b) ;
}
void echange (int * ad1, int * ad2)
{ int x ;
x = * ad1 ;
* ad1 = * ad2 ;
* ad2 = x ;
}
avant appel 10 20
après appel 20 10
Delannoy Livre.book Page 130 Mercredi, 6. mai 2009 4:26 16
Précédent

- 143/281

Suivant