Foncton qui retourne un tableau

Résolu
sarcipus Messages postés 9 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 31 mars 2009 - 31 mars 2009 à 00:42
sarcipus Messages postés 9 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 31 mars 2009 - 31 mars 2009 à 14:38
Bonjour à tous,
dans le programme sur lequel je travaille, j'aurais besoin qu'une fonction retourne un tableau multidimensionnel (dont je ne peux connaître la taille qu'une fois la fonction exécutée). J'espère que ma question n'est pas trop confuse. Quelqun aurait-il une idée ?

Merci d'avance pour votre aide.

7 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
31 mars 2009 à 14:34
Ben c'est juste le passage d'un classique pointeur:

void function(UCHAR *tab)
{
   tab[i]=init
}

dans le main
function(tab));

____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
31 mars 2009 à 07:12
salut

tu veux renvoyer un tableau dont tu ignores la taille ? C'est impossible car avant de le renvoyer, il faut l'allouer et si tu ne connais pas la taille, tu ne peux pas.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
31 mars 2009 à 08:41
Salut
coucou, je pense que tu as lu trop vite la question de sarcipus.
Bien sur que c'est possible:

void function(UCHAR **tab, int *size)
{
    *size=XXXXX;
    *tab=new UCHAR[*size];
    memset(*tab,0,*size);
}

int main()
{
    int size;
    UCHAR *tab=0;
    function(&tab,&size);
...
   delete []tab;

Maintenant si on veut vraiment être rigoureux, il est préférable que ce soit la fonction main qui fasse l'allocation dynamique parce qu'il y a de grande chance que le programmeur oublie de libérer la mémoire de tab.

Ne peux tu pas faire deux fonctions: une pour calculer la taille à alloué,et l'autre pour le reste du traitement?
A+
____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
31 mars 2009 à 10:24
"(dont je ne peux connaître la taille qu'une fois la fonction exécutée)"
toi, ta fonction prend la taille en parametre, ca implique qu'on conaisse la taille avant.
0

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

Posez votre question
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
31 mars 2009 à 10:55
Non dans ma fonction, size est un pointeur que je retourne au main. Doù le *size=XXXXX;
A+
____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
0
sarcipus Messages postés 9 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 31 mars 2009
31 mars 2009 à 13:22
Merci pour l'astuce. Je vais essayer.
Effectivement, je peux faire une fonction qui retourne la taille nécessaire pour
la création du tableau. Par contre je peux faire faire pour que la fonction (qui devait retourner le tableau) puisse le remplir ?
0
sarcipus Messages postés 9 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 31 mars 2009
31 mars 2009 à 14:38
Merci je vais essayer tout ça à tête reposée
0
Rejoignez-nous