Eléments de base du langage C - Transmission des paramètres

Index de l'article


Transmission des paramètres

 

En C, les arguments sont transmis par valeur.

Exemple

 

Ecrire un programme en C qui permet de permuter les valeurs de deux variables.

 

#include< stdio.h >

 

main()

 

{

 

void echange(int, int),

 

int a=1, b=20;

 

printf("Avant: %d %d", a,b);

 

echange(a,b);

 

printf("Après: %d %d", a,b);

 

retrurn 0;

 

}

 

void echange(inta, intb)

 

{

 

int c, b, a;

 

printf("Avant échange: %d %d", a,b);

 

c=a;

 

a=b;

 

b=c;

 

printf("Après échange: %d %d", a,b);

 

}

 

L'exécution de ce programme produit le résultat suivant:
avant: 10 20
avant échange: 10 20
après échange: 20 10
après: 10 20


On constate que lors de l'appel "échange reçoit des valeurs mais en revenant au programme principal aucune modification n'a été effectuée sur les valeurs transmises. Cela est dû à la transmission par valeur qui ne fait qu'une simple copie des valeurs utilisées.
Ce problème de permutation de valeur doit être résolu en utilisant la transmission par adresse.
En C, la transmission par adresse peut être simulée en utilisant un pointeur. Ceci permet de travailler sur le contenu de l'adresse.

 

#include

main()

 

{

 

void echange(int *ad1, int *ad2);

 

int a=10, b=20;

 

printf("avant: %d %d", a,b);

 

echange(&a, &b);

 

printf("après %d %d", a,b);

 

return 0;

 

}

 

void echange(int *ad1, int *ad2)

 

{

 

int c;

 

printf("avant échange: %d %d", *ad1, *ad2);

 

c=*ad1;

 

*ad1=*ad2;

 

*ad2=c;

 

printf("après échange %d %d", *ad1, *ad2);

 

}