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

Messages postés
57
Date d'inscription
lundi 31 mars 2003
Dernière intervention
22 novembre 2006
- - Dernière réponse : cs_Matt67
Messages postés
554
Date d'inscription
samedi 6 septembre 2003
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
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
115
Date d'inscription
samedi 20 décembre 2003
Dernière intervention
23 août 2008
3
Merci
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!

Merci Rouliann 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Rouliann
Messages postés
115
Date d'inscription
samedi 20 décembre 2003
Dernière intervention
23 août 2008
3
Merci
en n'oubliant pas le point virgule à la fin de l'instruction return bien sûr ^^

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

Merci Rouliann 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Rouliann
Messages postés
99
Date d'inscription
mercredi 12 mai 2004
Dernière intervention
29 mars 2006
3
Merci
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

}

Merci vangeurmasker 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de vangeurmasker
Messages postés
115
Date d'inscription
samedi 20 décembre 2003
Dernière intervention
23 août 2008
3
Merci
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!

Merci Rouliann 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Rouliann
Messages postés
57
Date d'inscription
lundi 31 mars 2003
Dernière intervention
22 novembre 2006
3
Merci
merci les gars pour vos reponses !

Merci nicola2s 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de nicola2s
Messages postés
115
Date d'inscription
samedi 20 décembre 2003
Dernière intervention
23 août 2008
0
Merci
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!
Commenter la réponse de Rouliann
Messages postés
57
Date d'inscription
lundi 31 mars 2003
Dernière intervention
22 novembre 2006
0
Merci
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
Commenter la réponse de nicola2s
Messages postés
115
Date d'inscription
samedi 20 décembre 2003
Dernière intervention
23 août 2008
0
Merci
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!
Commenter la réponse de Rouliann
Messages postés
554
Date d'inscription
samedi 6 septembre 2003
Dernière intervention
6 mars 2010
0
Merci
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...
Commenter la réponse de cs_Matt67

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.