Tableaux générique

mélody -  
 mélody -
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?
A voir également:

1 réponse

mélody
 
personne?
0
loupius
 
Si, il y a quelqu'un... et je vais proposer une réponse; mais avant je vais tenter de répondre à la question suivante: comment se fait-il qu'après quatre heures, personne n'ait répondu ?
Pour avoir une réponse, il faut que le bénévole potentiellement répondeur comprenne la question ! Ne pas le décourager par une exigence démesurée, par un phrasé incompréhensible, par un manque d'informations, par un code illisible et non indenté. Ici c'est, je pense, ce dernier cas qui s'applique.
A tous, je dis qu'il faut indenter le code.
Ceci dit, je n'aime pas beaucoup ce type de déclaration: typedef struct A *A;. Pourquoi? On simplifie mais l'abstraction engendrée nous fais perdre la notion des choses; je m'explique:
- si j'ai bien compris lorsque, dans le code, on mettra A, le préprocesseur le remplacera par struct A*;. Alors là, se rend-on encore compte qu'après la déclaration A Z, Z est un pointeur et, qu'en conséquence, il ne faudra surtout pas oublier de lui allouer de la mémoire avant de l'utiliser, sinon c'est le segment fault assuré ;-)
L'erreur ne vient peut-être pas de là mais une erreur de segmentation mène dans 99% des cas à une erreur f'allocation (oubli ou insuffisance).
Bon courage.
0
mélody > loupius
 
merci à toi loupios
0