Parametre de sortie d'une fonction

wislam2007
Messages postés
62
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
21 mars 2010
- 12 août 2009 à 10:03
cptpingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
- 15 août 2009 à 20:07
Salut

je veux enregistrer des infos dans des paramertre de sortie d'une fonction (en c++)?



Cordialement

5 réponses

Kotomine
Messages postés
112
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
5 novembre 2009

12 août 2009 à 10:17
J'aime pas le terme de paramètre de sortie.
C'est démodé, ça vient du c avec les read(buff), et ça dénote rien du tout.

Pour moi, buff existe déja, on l'a alloué, et read va y ranger des trucs dedans .

Je parle plutôt d'environnement de fonction. A cet instant, on voit un peu plus clair: buff est un espace mémoire qu'on donne à la fonction qui va s'en servir pour ranger ce qu'elle veut.

// la fameuse fonction swap
void swap1(int a,int b){
int tmp=a; a=b; b=tmp;
}

La fonction swap dispose d'un environnement de valeurs, pas de variables. Cette fonction échange 2 entiers dans sa propre mémoire (Super utile).
Si tu veux disposer des variables, tu dois faire

void swap2(int &a,int &b){
int tmp=a; a=b; b=tmp;
}

Cette fonction là dispose d'un environnement de 2 variables a et b (En simplifié, l'esperluette & veut dire je veux que mon a désigne la même variable que celle que je vais utiliser pour appeler swap())
Mais attention !

int a=33;
int b=44;
swap1(a,b); // possible
swap1(a,3); // possible
swap2(a,b); // possible
swap2(a,4); // IMPOSSIBLE ! swap2 veut 2 variables


Sans '&', ton compilateur va fabriquer un fonction qui prend des valeurs.

; I'm just keeping the hopeless cross to increase the meaninglessness
0
wislam2007
Messages postés
62
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
21 mars 2010
6
12 août 2009 à 10:38
si je comprend bien, tu veux dire il faut passer par adressage par reference?


A vs
0
sboli
Messages postés
10
Date d'inscription
vendredi 14 août 2009
Statut
Membre
Dernière intervention
31 mai 2010

14 août 2009 à 20:26
Passer par adressage sa veut pas dire grand chose, adressage par réfence encore moins.
En revanche oui, il faut passer par référence.
A noter qu'il existe la fonction std::swap dans le standard.
0
wislam2007
Messages postés
62
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
21 mars 2010
6
14 août 2009 à 20:37
mais je vois pas l'intérêt de swap.


A vs
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
125
15 août 2009 à 20:07
Il ne te dit pas que swap résout ton problème, il utilise un exemple pertinent pour t'expliquer un concept que tu ne sembles pas maîtriser. Je t'invite à revoir les pointeurs, une parfaite compréhension de cette notion répondras à la majorité des questions que tu te poses.

void pouet(int& nb)
{
  nb = 5;
}

int main()
{
  int nb = 0;
  std::cout << nb << std::endl;
  pouet(nb);
  std::cout << nb << std::endl;
  return 0;
}
0