[C] Help !! pb avec fonctions

Help !! pb avec fonctions [C] - C++ - Programmation

Marsh Posté le 02-11-2002 à 12:59:28    

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 :
  1. int fonction(int v1,int v2,int v3)
  2. {
  3. v1=1;
  4. v2=2;
  5. v3=3;
  6. return(v1,v2,v3);
  7. }
  8. main()
  9. {
  10. int var1=0,var2=0,var3=0;
  11. fonction(var1,var2,var3);
  12. printf("%i %i %i",var1,var2,var3); //pkoi cest tjs égal à 0???
  13. }


Message édité par *LighTninG* le 02-11-2002 à 13:00:17
Reply

Marsh Posté le 02-11-2002 à 12:59:28   

Reply

Marsh Posté le 02-11-2002 à 13:10:03    

*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 :
  1. int fonction(int v1,int v2,int v3)
  2. {
  3. v1=1;
  4. v2=2;
  5. v3=3;
  6. return(v1,v2,v3);
  7. }
  8. main()
  9. {
  10. int var1=0,var2=0,var3=0;
  11. fonction(var1,var2,var3);
  12. printf("%i %i %i",var1,var2,var3); //pkoi cest tjs égal à 0???
  13. }






 
Bon je vais essayer d'être compréenssible (ça va me changer :D ).
 
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 :
  1. void fonction(int *v1,int *v2,int *v3)
  2. {
  3. *v1=1;
  4. *v2=2;
  5. *v3=3;
  6. }


---------------
Le Tyran
Reply

Marsh Posté le 02-11-2002 à 13:29:46    

Ok, j'ai compris que dans ce cas là faut utiliser des pointeurs
mais le prog ainsi modifié plante au lancement...
 

Code :
  1. void fonction(int *valeur1,int *valeur2,int *valeur3)
  2. {
  3. *valeur1=1;
  4. *valeur2=2;
  5. *valeur3=3;
  6. }
  7. main()
  8. {
  9. int *var1,*var2,*var3;
  10. fonction(var1,var2,var3);
  11. printf("%i %i %i \n",var1,var2,var3);
  12. }


 
Donc keski faut faire?


Message édité par *LighTninG* le 02-11-2002 à 13:30:36
Reply

Marsh Posté le 02-11-2002 à 13:31:55    

Code :
  1. main()
  2. {
  3. int var1,var2,var3;
  4. fonction(&var1,&var2,&var3);
  5. printf("%i %i %i \n",var1,var2,var3);
  6. }


 
Le & devant une variable indique qu'on prend l'adresse mémoire de cette variable.

Reply

Marsh Posté le 02-11-2002 à 13:48:48    

Ok merci bcp LetoII et lorill, ca fonctionne maintenant :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed