C - Tableau à deux dimensions, de pointeurs

lamoua76 Messages postés 2 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 17 mai 2007 - 16 mai 2007 à 22:16
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014 - 17 mai 2007 à 23:28
Bonjour à tous !

Je dois créer un tableau à deux dimensions de pointeurs (d'une structure que j'ai créé).

Ma structure se nomme ainsi : pile.

Mon tableau à deux dimensions se nomme grille.
J'ai déclaré ainsi : pile*** grille;

Cependant
je n'arrive pas à allouer correctement la mémoire car lorsque j'ajoute
des éléments dans grille et que je fais un affichage de grille le
programme plante avant d'avoir afficher la totalité de son contenu.

Comment faut-il déclarer - allouer - attribuer un tableau à deux dimensions de pointeurs de structures???

D'avance merci !

7 réponses

cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
17 mai 2007 à 00:53
Salut,

char ** patate = new char*[50];
for(int i = 0; i < 20; i++)
{
    patate = new char[100];
}

Sa devrait équivaloir à un tableau char patate[50][100];
Il faut simplement comprendre qu'en réalité un tableau en 2D c'est dabord un tableau 1D de pointeur vers des tableaux 1D.

Remplace le char par le struct ou par ce qui t'intéresse et normalement tu es en voiture

A+ bon courage :)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 mai 2007 à 04:31
Salut,

char ** patate = new char*[50];
for(int i = 0; i < 20; i++)

pourquoi 50 et 20 ensuite ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
17 mai 2007 à 12:10
Ou on peut aussi oublier totalement le fait que ce soit un tableau 2D:

TYPE patate = new TYPE [largeur * hauteur];
// Tu accèdes ensuite à la valeur de la case (i,j);
=> patate[i + j * largeur];

De cette facon, tu as aussi un tableau 2D, mais plus simple a gérer. Dans ton cas, TYPE = pile*.
0
lamoua76 Messages postés 2 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 17 mai 2007
17 mai 2007 à 13:45
Ok merci pour les réponses !
0

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

Posez votre question
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
17 mai 2007 à 18:59
Salut, le 50 et le 20 c'était uniquement pour l'exemple :P La méthode Luthor est aussi bonne mais comprend bien mon exemple quand même car c'est très utile à connaître.

A+
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 mai 2007 à 19:07
Salut,

char ** patate = new char*[50];
for(int i = 0; i < 20; i++)
{
    patate = new char[100];
}

c'est pas plutot

char ** patate = new char*[50];
for(int i = 0; i < 50; i++)
{
    patate = new char[100];
}

no ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
17 mai 2007 à 23:28
ouais t'as raison j'avais pas vu l'erreur dsl

http://laptopgun.blogspot.com/
<
0
Rejoignez-nous