Accéder aux éléments d'une structure déclaré en pointeur [Résolu]

Signaler
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011
-
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011
-
bonjour, je bloque sur un point de mon prog (en C) a cause d'une structure dans laquelle j'arrive pas écrire.

je déclare une structure de la sorte :

struct maStructure {
int var1;
int var2;
int var3;
int var4;
};


Ensuite je déclare une variable pour cette structure de la sorte :

maStructure ***test={NULL};


Puis j'alloue de la sorte :

test= (maStructure***)malloc(10*sizeof(*test));
for( i = 0; i < 10; ++i)
{
test[i] = (maStructure**)malloc(15*sizeof(**test));
}

A la fin je désaloue, pour sa pas de pb.

Mon pb en fait c'est que je ne sais pas comment accéder a un éléments de la structure.

par exemple si je fais test[1][1].var1=3; ou test[1][1]->var1=3; et bien j'ai soit le prog qui plante soit le compilo qui passe pas.

Quelqu'un pourrait m'expliquer comme je peux modifier mes variables svp.

4 réponses

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Oh t'as juste fait un niveau de pointeur en trop :

maStructure **test;
test=(maStructure**)malloc(10*sizeof(void*));
for(i=0;i<10;i++) test[i]=(maStructure*)malloc(15*sizeof(maStructure));

et ensuite effectivement :
test[1][1].var1=3;

par contre on évite d'appeler 150 fois malloc() quand ce n'est pas nécessaire :
voir par exemple http://www.codyx.org/snippet_allocateur-pointeur-pointeurs_293.aspx
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011

ok sa marche merci, mais si je ne peux pas enlever le pointeur triple est ce que je peux quand même accéder a cette variable?
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Que veux-tu dire par "je ne peux pas enlever le pointeur triple"?
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011

ben non enfait c'est bon, j'ai modifier le reste de mon code pour que sa marche avec les double pointeur.