Comme nous l'avons constaté ci-dessus, une fonction n'obtient que les valeurs de ses paramètres.
![]()
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:
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.

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.
