Bonjour,
Je souhaiterai retourner un tableau d'entier avec une fonction mais je ne trouve pas de moyen de le faire.
quelqu'un pourrait me guider ?
Merci
Bonjour,
Je souhaiterai retourner un tableau d'entier avec une fonction mais je ne trouve pas de moyen de le faire.
quelqu'un pourrait me guider ?
Merci
Un tableau d'entier est un objet comme un autre, il se retourne de la même façon que tout autre objet.
Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 std::vector<int> f() { std::vector<int> tab; tab.push_back(1); tab.push_back(2); return tab; }
une autre façon de faire qui à mon sens semble plus propre quand meme serait d'utiliser un passage par adresse au lieu d'un passage par paramètre.
et donc comme tu passes en paramètre l'adresse du tableau bah toutes les opérations que tu fais dans ta fonction s'applique directement sur le tableau en entrée et du coup si jamais un jour t'as besoin de transmettre plusieurs tableaux en sortie, t'as seulement à mettre plusieurs tableaux en entrée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int main() { int tab[x]; //initialisation des variables du tableau for(int i=0;i<x;i++) tab[i]=0; maFunction(tab); } void maFunction(int *tabDEntier) { //traitement à faire dans le tableau }
Je travaille
Tu travailles
Il travaille
Nous travaillons
Vous travaillez
Ils travaillent
...
On travaille tous lol
Pour des raisons étranges, le C ne le permet pas, et C++ qui en hérite conserve cette idée.Je souhaiterai retourner un tableau d'entier avec une fonction mais je ne trouve pas de moyen de le faire.
quelqu'un pourrait me guider ?
Pour pouvoir retourner un tableau, il faut le mettre dans une structure.
Tu peux automatiquement générer la structure appropriée avec boost::array ou std::tr1::array.
Arg, par pitié, quitte à faire du C-style fais le au moins correctement. Il est nécessaire de passer la taille du tableau en paramètre (ou alors cette fonction utilise aussi la constante x, et ça fait des beaux programmes même pas adaptables vis-à-vis de la taille des tableaux). Cependant, en C++ la solution suivante est bien plus propre:Envoyé par Startux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 vector<int> truc; ... maFunction(truc); ... void maFunction(vector<int>& tab) { ...
non pas nécessairement, si dans ta fonction tu fais :Il est nécessaire de passer la taille du tableau en paramètre (ou alors cette fonction utilise aussi la constante x
de cette manière tu peux lui passer n'importe quel tableau sans avoir à lui passer un paramètre supplémentaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int taille = sizeof(tab)/sizeof(int);
tab est un int*. sizeof(tab) te renverra donc la taille d'un entier, pas celle du tableau. Il est obligatoire de passer la taille, si hjustement tu desire avoir la possibilite de gerer des tableaux de differentes tailles.Envoyé par Startux
La syntaxe est trompeuse, on ne peut pas passer de tableaux a une fonction, uniquement des pointeurs.Envoyé par Startux
bl4d3 à dit :
moi en tout cas ca me renvoie la taille du tableau*par la taille de la variable.tab est un int*. sizeof(tab) te renverra donc la taille d'un entier, pas celle du tableau. Il est obligatoire de passer la taille, si hjustement tu desire avoir la possibilite de gerer des tableaux de differentes tailles.
c'est pour ça qu'il faut diviser par sizeof(int).
d'autre part c'est un exemple du msdn de VS 6.0
j'avoue que c'est à discuter mais bon pour moi, c'est une affaire qui roule lol
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int array[] = { 1, 2, 3, 4, 5 }; // sizeof( array ) is 20 // sizeof( array[0] ) is 4 size_t sizearr = // Count of items in array sizeof( array ) / sizeof( array[0] );![]()
Normal, tu prends la taille d'un tableau. Ici on parlait de prendre la taille d'un pointeur, ce qui est différent.moi en tout cas ca me renvoie la taille du tableau*par la taille de la variable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void F(int* array) { std::cout << sizeof(array) << std::endl; } int main() { int array[] = {1, 2, 3, 4, 5}; std::cout << sizeof(array) << std::endl; F(array); return 0; }
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Quand tu passes un tableau. Le probleme est qu'il n'y a pas moyen de passer un tableau (sauf a le mettre dans une struct) a une fonction. DansEnvoyé par Startux
on passe 3 pointeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part void f(int p1[], int p2[10], int *p3)
Partager