Previous Next Up Index Contents

10.5.3. Passage de l'adresse d'une variable

Comme nous l'avons constaté ci-dessus, une fonction n'obtient que les valeurs de ses paramètres.

Attention!

Pour changer la valeur d'une variable de la fonction appelante,

nous allons procéder comme suit:

- la fonction appelante doit fournir l'adresse de la variable et

- la fonction appelée doit déclarer le paramètre comme pointeur.

On peut alors atteindre la variable à l'aide du pointeur.

Discussion d'un exemple

Nous voulons écrire une fonction PERMUTER qui échange le contenu de deux variables du type int. En première approche, nous écrivons la fonction suivante:

Mauvaise solution

void PERMUTER (int A, int B)
{
 int AIDE;
 AIDE = A;
 A = B;
 B = AIDE;
}

Nous appelons la fonction pour deux variables X et Y par:

   PERMUTER(X, Y);

Résultat: X et Y restent inchangés !

Explication: Lors de l'appel, les valeurs de X et de Y sont copiées dans les paramètres A et B. PERMUTER échange bien contenu des variables locales A et B, mais les valeurs de X et Y restent les mêmes.

Pour pouvoir modifier le contenu de X et de Y, la fonction PERMUTER a besoin des adresses de X et Y. En utilisant des pointeurs, nous écrivons une deuxième fonction:

Bonne solution

void PERMUTER (int *A, int *B)
{
 int AIDE;
 AIDE = *A;
 *A = *B;
 *B = AIDE;
}

Nous appelons la fonction par:

   PERMUTER(&X, &Y);

Résultat: Le contenu des variables X et Y est échangé !

Explication: Lors de l'appel, les adresses de X et de Y sont copiées dans les pointeurs A et B. PERMUTER échange ensuite le contenu des adresses indiquées par les pointeurs A et B.

Remarque

Dans les grilles, nous allons marquer les paramètres acceptant une adresse comme pointeurs et indiquer le contenu de ces adresses.


Previous Next Up Index Contents


Feedback - Copyright © 1993,1996,1997 F.Faber