Est il possible en C de retourner un tableau d'entier dasn une fcontcion ?? [Résolu]

Signaler
Messages postés
57
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
22 novembre 2006
-
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010
-
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

Messages postés
115
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
23 août 2008
1
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!
Messages postés
115
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
23 août 2008
1
en n'oubliant pas le point virgule à la fin de l'instruction return bien sûr ^^

____________________
**Rouliann**
Life is short, program more!
Messages postés
99
Date d'inscription
mercredi 12 mai 2004
Statut
Membre
Dernière intervention
29 mars 2006

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

}
Messages postés
115
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
23 août 2008
1
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!
Messages postés
57
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
22 novembre 2006
1
merci les gars pour vos reponses !
Messages postés
115
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
23 août 2008
1
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!
Messages postés
57
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
22 novembre 2006
1
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
Messages postés
115
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
23 août 2008
1
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!
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

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...