Pointeurs!!!! help!!!

Fermé
alilou!! - 22 mars 2009 à 16:39
 loupius - 22 mars 2009 à 18:44
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.

1 réponse

il n-y a jamais personne qui répond ici on firait
0
Si, il y a du monde, mais n'oublie pas qu'aujourd'hui c'est dimanche.
Il y a du monde mais personne n'a envie de lire ton code illisible: il n'est pas indenté !!!
Pour cela il y a les balises: (dans l'ordre) Gras, Italique, Souligné, Code, Lien.
Avant d'envoyer tu peux visualiser, afin de vérifier que personne ne sera rebuté par la présentation.
Bon courage.
0