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 :
Je vous remercie beaucoup de votre aide. Bien cordialement !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Partager