LetoII Le dormeur doit se réveiller | *LighTninG* a écrit a écrit :
Salut !
J'ai un ptit pb à régler vis à vis des fonctions (moi y en a
être débutant).
Voila dans ce petit prog je veux donner à var1,var2 et var3 les
valeurs de v1,v2 et v3 calculés avec la fonction.
Cependant, apres avoir effectué la fonction dans le main, j'affiche les valeurs des 3 variables (qui devraient
donc etre 1,2 et 3), or celles ci sont toujours égales à 0!!
Donc ca va pas ya quelque chose que j'ai pas encore pigé dans
les fonctions, donc je vous remercie d'avance pour m'expliquer
où est le pb
Code :
- int fonction(int v1,int v2,int v3)
- {
- v1=1;
- v2=2;
- v3=3;
- return(v1,v2,v3);
- }
- main()
- {
- int var1=0,var2=0,var3=0;
- fonction(var1,var2,var3);
- printf("%i %i %i",var1,var2,var3); //pkoi cest tjs égal à 0???
- }
|
|
Bon je vais essayer d'être compréenssible (ça va me changer ).
Dans ta fonction tu fais un passage de paramètres par valeur, c'est à dire que lorsque tu appelle ta fonction, les valeurs de chaques argument sont copiée. C'est sur ces copies que travaille la fonction. Lorsque tu resort de la fonction tu n'a donc pas modifié tes variables. Si tu veux que ta fonction modifie les valeurs des arguments que tu lui passe tu doit faire un passage de paramètre par adrese. Dans ce cas là tu vas indiquer à la fonction l'adresse des variables contenant les arguments, tu poura donc modifier ces variables.
Ca donne qqc comme ça:
Code :
- void fonction(int *v1,int *v2,int *v3)
- {
- *v1=1;
- *v2=2;
- *v3=3;
- }
|
---------------
Le Tyran
|