Foncton qui retourne un tableau

[Résolu]
Signaler
Messages postés
9
Date d'inscription
jeudi 19 mars 2009
Statut
Membre
Dernière intervention
31 mars 2009
-
Messages postés
9
Date d'inscription
jeudi 19 mars 2009
Statut
Membre
Dernière intervention
31 mars 2009
-
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

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
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
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
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.
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
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
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
"(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.
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
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
Messages postés
9
Date d'inscription
jeudi 19 mars 2009
Statut
Membre
Dernière intervention
31 mars 2009

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 ?
Messages postés
9
Date d'inscription
jeudi 19 mars 2009
Statut
Membre
Dernière intervention
31 mars 2009

Merci je vais essayer tout ça à tête reposée