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

nicola2s 57 Messages postés lundi 31 mars 2003Date d'inscription 22 novembre 2006 Dernière intervention - 8 mai 2005 à 14:07 - Dernière réponse : cs_Matt67 554 Messages postés samedi 6 septembre 2003Date d'inscription 6 mars 2010 Dernière intervention
- 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
Rouliann 115 Messages postés samedi 20 décembre 2003Date d'inscription 23 août 2008 Dernière intervention - 8 mai 2005 à 15:06
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Rouliann
Meilleure réponse
Rouliann 115 Messages postés samedi 20 décembre 2003Date d'inscription 23 août 2008 Dernière intervention - 8 mai 2005 à 15:07
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Rouliann
Meilleure réponse
vangeurmasker 99 Messages postés mercredi 12 mai 2004Date d'inscription 29 mars 2006 Dernière intervention - 8 mai 2005 à 15:33
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de vangeurmasker
Meilleure réponse
Rouliann 115 Messages postés samedi 20 décembre 2003Date d'inscription 23 août 2008 Dernière intervention - 8 mai 2005 à 15:36
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Rouliann
Meilleure réponse
nicola2s 57 Messages postés lundi 31 mars 2003Date d'inscription 22 novembre 2006 Dernière intervention - 8 mai 2005 à 17:33
3
Merci
merci les gars pour vos reponses !

Merci nicola2s 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de nicola2s
Rouliann 115 Messages postés samedi 20 décembre 2003Date d'inscription 23 août 2008 Dernière intervention - 8 mai 2005 à 17:53
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
nicola2s 57 Messages postés lundi 31 mars 2003Date d'inscription 22 novembre 2006 Dernière intervention - 8 mai 2005 à 19:48
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
Rouliann 115 Messages postés samedi 20 décembre 2003Date d'inscription 23 août 2008 Dernière intervention - 8 mai 2005 à 19:59
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
cs_Matt67 554 Messages postés samedi 6 septembre 2003Date d'inscription 6 mars 2010 Dernière intervention - 8 mai 2005 à 20:44
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.