Tableau a double entrée alloué dynamiquement

amortlintelligence Messages postés 2 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 2 septembre 2003 - 2 sept. 2003 à 00:23
blopera Messages postés 10 Date d'inscription samedi 23 août 2003 Statut Membre Dernière intervention 20 décembre 2004 - 3 sept. 2003 à 01:58
Voila j'aurais voulu utiliser un tableau (tableau de tableau) dans une fonction. Je pense qu'il faut donc que je le crée dynamiquement avec un code du genre int* tab = new int[x][y]; mais le compilo dit pas comme moi.
le but était de de créer un tableau dans une fonction, la taile n'étant connu qu'au milieu de la fonction. ce tableau contiendrais 2 fois X (le nombre connu au milieu de la fonction) donné de format "int". Après quoi la fonction retournerais l'adresse du tableau, pour pouvoir récupéré les information dans le corps du programme.
Voila j'espère avoir été assez clair, je sais que la solution n'est pas super compliquée mais la j'ai un trou !

merci a vous

nico

5 réponses

blopera Messages postés 10 Date d'inscription samedi 23 août 2003 Statut Membre Dernière intervention 20 décembre 2004
2 sept. 2003 à 02:00
slt,

il faut que tu utilises un double pointeur : int **tab;
pour l'allocation, elle doit se faire en 2 étapes :
tab = new (int*)[20];
for(int i=0; i !=20; i++)
tab[i] = new int[30];

évidemment, il faut désallouer :
for(int i=0; i !=20; i++)
delete [] tab[i];
delete [] tab;

a+
Bertrand
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 sept. 2003 à 09:35
sans boucle, memory manager tournera 1 seule fois:
pour new ou malloc:
tab = (int**) malloc(x*y*sizeof(int));
BruNews, ciao...
0
amortlintelligence Messages postés 2 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 2 septembre 2003
2 sept. 2003 à 13:15
juste un truc :
c'est possible de le parcourir du début à la fin sans pour autant connaitre sa taille ?
merci pour vos réponses

nico
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 sept. 2003 à 13:38
bien sur que non, faut toujours savoir la taille d'un bloc, on le prend en param ou autre moyen mais il en faut un.
BruNews, ciao...
0

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

Posez votre question
blopera Messages postés 10 Date d'inscription samedi 23 août 2003 Statut Membre Dernière intervention 20 décembre 2004
3 sept. 2003 à 01:58
euh...
tab = (int*) malloc(x*y*sizeof(int));
mais alors tab est un int* et non un int**... ;-)

donc pas de gestion en tab[i][j] mais en tab[i + x*j]...

Bertrand
0
Rejoignez-nous