Fonction qui retourne plusieurs valeurs !
Bonjour,
J'aimerais savoir si c'est possible de faire une fonction qui retourne 3 valeurs: a[0], a[1] et a[2].
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| int fonction(int chiffre){
int a[3];
a[0] = chiffre+1;
a[1] = chiffre+2;
a[2] = chiffre+3;
return(????); //Faut mettre quoi ?
}
void main(void){
int b[3];
//Comment récupérer les 3 valeurs de la fonction dans le tableau b[3] ?
} |
Merci d'avance...
++
questions sur les solutions proposées
Bonjour,
je débute en C++. Après une recherche sur le web , je suis tombé sur cette discussion, qui date de 2004, mais qui visiblement est encore pertinente puisqu'elle apparait en haut dans les résultats de recherche.
J'ai une question par rapport à ce qui a été dit, par Luc Hermitte le 10/01/04 :
"std::vector<>, qui permet d'avoir une taille de la zone contenue variable ; par contre copie des 3 éléments aussi je le crains"
Au niveau de la crainte : C'est à dire que les 3 éléments de retour sont créés puis passés ensuite à des variables au niveau de l'appel de fonction ? C'est-à dire : par exemple, on a :
Code:
1 2 3 4
| int retour f1() {
retour=3;
return retour;
} |
et dans le main:
Alors on a 2 entiers qui sont créés : retour et a.
En revanche si on fait :
Code:
1 2 3
| void f1 (int &retour) {
retour=3;
} |
puis dans le main :
Code:
1 2 3
| int a;
int &b=a;
f(b); |
Alors dans ce deuxième cas on ne crée qu'un objet de type int : a .
C'est ce que voulait dire Luc Hermitte ?
2ème point : je trouve qu'au niveau de la lecture c'est pas super agréable: on passe en argument ce qu'on aimerait avoir en sortie : c'est bizarre comme logique, non ?
MErci pour vos retours !
PS : désolé, je n'ai pas encadré le code par des balises adaptées, je ne vois pas ces balises dans l'interface d'édition de message !