Est il possible en C de retourner un tableau d'entier dasn une fcontcion ??

Résolu
nicola2s Messages postés 57 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 22 novembre 2006 - 8 mai 2005 à 14:07
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 - 8 mai 2005 à 20:44
j'ai une fonction dans laquelle j'obtient un tableau d'entier

int bidul[15];

est if possible de retourner ce tableau d'entier dasn ma fonction ?

si oui comment s'écrit l'entete de la fct ?



merci

9 réponses

Rouliann Messages postés 115 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 23 août 2008 1
8 mai 2005 à 15:06
non c'est impossible mais tu peux retourner un pointeur vers le premier élément du tableau :



int* fonction(param...)

{

...

return &bidul[0] // ou return bidul

}


____________________
**Rouliann**
Life is short, program more!
3
Rouliann Messages postés 115 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 23 août 2008 1
8 mai 2005 à 15:07
en n'oubliant pas le point virgule à la fin de l'instruction return bien sûr ^^

____________________
**Rouliann**
Life is short, program more!
3
vangeurmasker Messages postés 99 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 29 mars 2006
8 mai 2005 à 15:33
Sinon tu peut creer une structure



typedef struct{ //a placer après les #include

int tableau[15];

}Ma_structure;



Ma_structure fonction(arguments)

{

Ma_structure tab_element; //on crée une variable

tab_element.tableau[1]=1; //tab_element.tableau est un tableau de 15 entiers

tab_element.tableau[2]=23;//etc...



return tab_element; //on renvoie le tableau

}
3
Rouliann Messages postés 115 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 23 août 2008 1
8 mai 2005 à 15:36
Voui mais créer une structure juste pour un tableau alors qu'on peut le
renvoyer par pointeur je trouve ça idiot... mais c'est ma vision de la
chose ^^

@+

____________________
**Rouliann**
Life is short, program more!
3

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

Posez votre question
nicola2s Messages postés 57 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 22 novembre 2006 1
8 mai 2005 à 17:33
merci les gars pour vos reponses !
3
Rouliann Messages postés 115 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 23 août 2008 1
8 mai 2005 à 17:53
c'était peut etre pas la peine de mettre 5réponses en vert!! ^^ n'en
mais qu'une seule voire 2 pour les gens qui regarderont ce topic plus
tard ;)

____________________
**Rouliann**
Life is short, program more!
0
nicola2s Messages postés 57 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 22 novembre 2006 1
8 mai 2005 à 19:48
re salut les gars !

j'ai essayé avec la structure, mais comme l'a Rouliann, c un peu bete de créer une structure que pour ca.



Par contre j'arrive pas à implanter l'autre solution. Je retourne bien
ce que tu m'a dis comme dasn l'exemple suivant. Mais tu récupere ca
comment dans la fct qui l'appel ??



void fonctionBidul(param ...){

int * resultat; //

int resultat[128]; //

int resultat ; //



resultat = f1(...);



}




int* f1(param...)

{

bidul[0] = 5;

bidul[1] = 8;

bidul[2] = 1;

...

return &bidul[0] // ou return bidul

}





voila en fait tu déclare comment la variable resultat ? g mis les 3 possibilité. laquelle faut prendre.

Et apres pourai tu m'ecrire vite fait qq lignes dans la fontion
fonctionBidul pour afficher les valeurs du tab apres l'avoir récupéré.



merci de ton aide
0
Rouliann Messages postés 115 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 23 août 2008 1
8 mai 2005 à 19:59
void fonctionBidul(param...)

{

int* resultat = f1(...);

for(; resultat<128; resultat++)

{

cout<<(*resultat);

}

}



int* f1(param...)

{

...

return bidul;

}


voilà ca devrait marcher ;)
____________________
**Rouliann**
Life is short, program more!
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
8 mai 2005 à 20:44
Bonsoir,



Ta question n'est pas très préçise.

Est ce que ton tableau est declaré dans ta fonction ou bien tu le passes en parametre ou bien c'est tableau à portée globale ?



Si tableau déclaré dans ta fonction :

int* fonction()

{

int tab[2];

tab[0] = 1;

tab[1] = 2;

return tab;

}

Ceci n'est pas bon car tu revoies un pointeur sur un tableau qui est local à ta fonction donc qui n'existe plus dès que tu sors.


tu peux faire comme ca



int* fonction()

{

int* tab;

tab = (int*)malloc(2 * sizeof(int));

tab[0] = 1;

tab[1] = 2;

return tab;

}



int main(int argc, char *argv[])

{

int* retour;

retour = fonction();

printf("1er élément : %d", retour[0]);

printf("2eme élément : %d", retour[1]);

free(retour);

return 0;

}

Voici une methode, une autre consiste à passer ton tableau en paramçtre mais je te laisse essayer,


Matt...
0
Rejoignez-nous