Pointeur sur structure en paramètre d'entrée
Bonjour,
Je suis un novice en langage C.
Le problème que je n'arrive pas à résoudre concerne un pointeur sur une structure que j'ai créée (TNoeud).
J'envoie ce pointeur (racine) en paramètre d'entrée d'une fonction que j'ai appelé inserer. Celle-ci affecte au pointeur racine l'adresse d'un autre pointeur (noeud)
A la sortie de cette fonction, je m'attends à ce que le pointeur racine dans ma fonction main contienne l'adresse du pointeur créé dans la fonction inserer.
Or, il n'en est rien le pointeur racine n'a pas été modifié. Pourquoi ? comment faire pour qu'il garde la valeur obtenue dans la fonction inserer ?
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#include <stdio.h>
#include <stdlib.h>
typedef struct Tnoeud Tnoeud;
struct Tnoeud
{
int info;
};
void inserer(Tnoeud *laRacine, int *lenombre)
{
//je cree un pointeur et reserve dynamiquement
//de la memoire egale à la taille de la structure Tnoeud
Tnoeud *noeud=malloc(sizeof(Tnoeud));
*lenombre=*lenombre+10;
noeud->info=*lenombre;
//j'affecte à mon paramètre d'entrée l'adresse de la
//cellule memoire créée
laRacine=noeud;
printf("pendant : %d\n", laRacine);
}
int main()
{
// je declare un pointeur racine sur la structure Tnoeud
//en l'intialisant à null
Tnoeud *racine=NULL;
int nombre=10;
printf("avant : %d %d\n", racine, nombre);
// j'appelle ma fonction inserer sur le pointeur racine
inserer(racine, &nombre);
// au retour de la fonction je m'attends à ce que racine
//ait pris la valeur obtenue dans la fonction inserer
printf("apres : %d %d\n", racine, nombre);
// il n'en est rien la valeur de racine est toujours
// la même. Pourquoi ? comment faire pour qu'elle garde
// la valeur attribuée dans la fonction inserer ?
return 0;
} |
Je vous remercie beaucoup de votre aide. Bien cordialement !