angebrune8
Messages postés22Date d'inscriptionjeudi 31 janvier 2008StatutMembreDernière intervention26 mars 2009
-
21 mars 2009 à 18:47
angebrune8
Messages postés22Date d'inscriptionjeudi 31 janvier 2008StatutMembreDernière intervention26 mars 2009
-
22 mars 2009 à 02:03
Bonjour,un problème avec les pointeurs générique.
voici mon code:
struct A{
void ** cles;
}
typedef struct A *A;
void **cles(A self) {
return self->cles;
}
struct B {
A deleg
}
typedef struct B*B
si je fais
void affiche(B self) {
for(int i=0;i<10;i++)
if(*(cles(self->delg)+i*size)>0) //je veux accéder à l'élément d'indice i du tableau cles
printf("%d\n",1);
}
mais la ligne if(*cles .... provoque une erreur de segmentation ca
fait 2 jours que j'essaie plusieurs combinaisons mais rien a faire.
quelqun aurait une solution svp?
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 22 mars 2009 à 00:20
Plusieurs remarques :
* évite d'utiliser le même nom pour la structure et son pointeur;
* tu peux remplacer l'accès par simplement if(cles(self->deleg)[i]>0) printf(...);
mais le code avant était correct. Par contre, pourquoi tester si >0, vu que c'est un pointeur?
faudrait mettre un peu plus de code, notamment l'initialisation de self, parce que c'est là que doit être le problème.
angebrune8
Messages postés22Date d'inscriptionjeudi 31 janvier 2008StatutMembreDernière intervention26 mars 2009 22 mars 2009 à 02:00
en fait les structures A et B sont dans des modules différents si jamais je fais B->deleg->cles ca ne marche pas. Ainsi clés permet d'acceder au tableau clés. Non?