Creer une fonction retournant un tableau

billcala Messages postés 3 Date d'inscription mercredi 13 août 2003 Statut Membre Dernière intervention 14 août 2003 - 13 août 2003 à 17:03
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 14 août 2003 à 00:21
j'essaie de créer une fonction qui doit initialiser un tableau d'entiers : le code que je fais est :

int mafonction()[8];
using namespace std;

int mafonction()
{
int kaboum[8]={1,2,3,4,5,6,7,8};
cout<<"Kaboum 4 : "<<kaboum[4];
return kaboum[];
}

int main()
{
int tableau[8];
tableau=mafonction;

system("PAUSE");
return 0;
}

devc++ me renvoie : `mafonction' declared as function returning an array

comment faire???
merci!

7 réponses

HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
13 août 2003 à 17:52
Essai ça et tiens moi au courant pas le temps de tester mais à priori..
int* mafonction();
using namespace std;

int mafonction()
{
int kaboum[8]={1,2,3,4,5,6,7,8};
cout<<"Kaboum 4 : "<<kaboum[4];
return kaboum;
}

int main()
{
int tableau[8];
tableau=mafonction;

system("PAUSE");
return 0;
}

a+
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
13 août 2003 à 17:57
Une étoile est rester coincer dans le clavier...
essai plutot ça...

int* mafonction();//récupère pointeur sur entier
using namespace std;

int* mafonction()
{
int kaboum[8]={1,2,3,4,5,6,7,8};//kaboum=pointeur sur l'adresse de base de ton tableau
cout<<"Kaboum 4 : "<<kaboum[4];
return kaboum;//revoie l'adresse de base de ton tableau
}

int main()
{
int tableau[8];
tableau=mafonction;

system("PAUSE");
return 0;
}

le seule question est : est ce que kaboum, variable locale, n'est pas "détruit"? Si oui, tu peux récupérer ton tableau tant qu'il n'a pas été écraser. Vue que je sais pas trop, j'espère qu'un autre répondra à cette intérrogation
a+
0
billcala Messages postés 3 Date d'inscription mercredi 13 août 2003 Statut Membre Dernière intervention 14 août 2003
13 août 2003 à 17:59
ça a l'air mieux mais il me répond maintenant : incompatible types in assignment of `int * ()()' to `int[8]'
pour 'tableau=mafonction;'

qu'en penses-tu?
merci
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
13 août 2003 à 18:08
decidement je suis pas en forme aujourd'hui, essai ça pour la troisième fois et je pense que c'est la bonne. A demain, j'ai du boulot...
int* mafonction();//récupère pointeur sur entier
using namespace std;

int* mafonction()
{
int kaboum[8]={1,2,3,4,5,6,7,8};//kaboum=pointeur sur l'adresse de base de ton tableau
cout<<"Kaboum 4 : "<<kaboum[4];
return kaboum;//revoie l'adresse de base de ton tableau
}

int main()
{
int tableau[8];
strcpy(tableau,mafonction);

system("PAUSE");
return 0;
}

a+
0

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

Posez votre question
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
13 août 2003 à 19:01
Effectivement le tableau étant alloué statiquement dans le corps d'une fonction, il est détruit quand on sort de cette fonction.

Kaid - kaid.fr.st
0
billcala Messages postés 3 Date d'inscription mercredi 13 août 2003 Statut Membre Dernière intervention 14 août 2003
14 août 2003 à 00:00
il me renvoie comme message d'erreur au niveau de strcpy :
passing `int *' as argument 1 of `strcpy(char *, const char *)'

ouh là,là... c'est compliqué d'initialiser dans une fonction un tableau d'entiers... je vais finir par faire du visual basic...
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
14 août 2003 à 00:21
Salut,
bon...
1) strcpy : seulement pour chaine de caracteres terminées par null, surtout pas int ou autre.
2) tu ne peux pas retourner le tableau créé dans 'mafonction', car comme Kaid l'a dis plus haut, ton tableau n'est accessible que depuis la fonction.

Moi je te donne une version avec pointeurs... la fonction ne retourne pas un tableau, mais elle remplie 'tableau' avec les valeurs de 'kaboum'.

#include <stdio.h>

int mafonction(int * pArray) // arg: pointeur sur tableau d'int
{
int kaboum[8]={1,2,3,4,5,6,7,8};
for(int i=0; i<8; i++)
*(pArray+i) = kaboum[i];
return 0;
}

int main()
{
int tableau[8];
mafonction(tableau);
return 0;
}
0
Rejoignez-nous