Accéder aux éléments d'une structure déclaré en pointeur

Résolu
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 22 mars 2009 à 14:07
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 22 mars 2009 à 23:20
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

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
22 mars 2009 à 17:36
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
3
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
22 mars 2009 à 18:51
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?
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
22 mars 2009 à 23:14
Que veux-tu dire par "je ne peux pas enlever le pointeur triple"?
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
22 mars 2009 à 23:20
ben non enfait c'est bon, j'ai modifier le reste de mon code pour que sa marche avec les double pointeur.
0
Rejoignez-nous