soucis pointeurs - C - Programmation
Marsh Posté le 22-03-2009 à 17:36:55
Hmmouais. Ta fonction inserer_b_arbre_entier me parait pas correct du tout. Tu gardes des références d'élements pointant sur la pile dans des structures allouées dynamiquement. C'est condamné à se casser la figure.
Et plutôt que de te casser la tête à passer des références, passe directement la valeur entière :
Code :
|
Etc... va falloir adapter les appels dans la fonction main().
Ok, c'est un peu bancal comme approche (si sizeof (int) != sizeof (void*)), sinon va falloir passer par de l'allocation dynamique :
Code :
|
Marsh Posté le 22-03-2009 à 17:46:41
merci a toi tpierron je m-y met de suit. je te tiens au courant
Marsh Posté le 22-03-2009 à 18:01:58
ca marche parfaitement merci beaucoup vraiment j'ai passé des heures dessus!!
Marsh Posté le 22-03-2009 à 17:00:13
Bonjour,
Bonjour j'ai quelques soucis avec les pointeurs voici mon code je travaille en c. je voudrais pouvoir inserer des entier dans la structure b_arbre_entier qui utilise le module générique b_arbre. mais g des gros soucis avecs les pointeurs:
void inserer_b_arbre_entier(b_arbre_entier self,int elem)
{
void *tmp=(void *)&elem;
inserer_b_arbre(self->deleg,tmp);
}
void
inserer_b_arbre(b_arbre self,void* e)
{
noeud r=self->racine;
if(r->nb_cles==2*self->ordre-1)
{
noeud s=creer_noeud(self->ordre,self->racine->compare,self->racine->taille);
self->racine =s;
s->feuille=false;
s->nb_cles=0;
s->fils=malloc(sizeof(self->racine));
s->fils[0]=r;
partager_enfant(self,s,0,r);
inserer_b_arbre_incomplet(self,s,e);
}
else
inserer_b_arbre_incomplet(self,r,e);
}
int main(void)
{
b_arbre_entier b=creer_b_arbre_entier(2,compare,sizeof(int));
inserer_b_arbre_entier(b,12);
printf("%d\n",*((int*)(*(cles(racine(b->deleg)))))); //afiiche 12 ok
inserer_b_arbre_entier(b,8);
printf("%d\n",*((int*)(*(cles(racine(b->deleg)))))); //affiche 8 ok
printf("%d\n",*((int*)(*(cles(racine(b->deleg))+1)))); // affiche 8 nonnnnnnn!!!
return EXIT_SUCCESS;
}
le soucis est qu'avant meme d'avoir fini la seconde insertion le premier élément est déjà changé. ainsi avant d'avoir affecté la valeur 8 à la structure, le premier élement n'est déjà plus 12 mais 8. je crois que c'est un problème de références mais je ne vois pas du tout mon erreur. si quelqun a une idée svp.