Pointeurs c++
Fermé
pampitup
Messages postés
2
Date d'inscription
dimanche 4 octobre 2009
Statut
Membre
Dernière intervention
5 octobre 2009
-
4 oct. 2009 à 23:25
watou Messages postés 199 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 19 avril 2013 - 5 oct. 2009 à 00:48
watou Messages postés 199 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 19 avril 2013 - 5 oct. 2009 à 00:48
4 réponses
De toute façon pour ajouter un élément dans une liste, il faut allouer de l'espace mémoire.
En conséquence, si on ne veut utiliser le couple new/delete il ne reste plus que la possibilité d'utiliser le couple malloc/free.
Si l'ajout se fait en début de liste, li est bien évident qu'il faut faire une recopie; par contre si l'ajout se fait en fin de liste on peut se contenter d'un realloc.
Bonne continuation.
En conséquence, si on ne veut utiliser le couple new/delete il ne reste plus que la possibilité d'utiliser le couple malloc/free.
Si l'ajout se fait en début de liste, li est bien évident qu'il faut faire une recopie; par contre si l'ajout se fait en fin de liste on peut se contenter d'un realloc.
Bonne continuation.
pampitup
Messages postés
2
Date d'inscription
dimanche 4 octobre 2009
Statut
Membre
Dernière intervention
5 octobre 2009
5 oct. 2009 à 00:37
5 oct. 2009 à 00:37
merci pr ta réponse rapide,mais je ne veux pas non plus utiliser malloc.
Je ne vois tjs pas la différence entre Add3 qui appelle Add2 et Add1 et qui m'affiche la liste correctement, et juste Add1 qui est censée affichier la liste entière.
Si quelqu'un voit le truc, toutes les remarques sont les bienvenues !
Je ne vois tjs pas la différence entre Add3 qui appelle Add2 et Add1 et qui m'affiche la liste correctement, et juste Add1 qui est censée affichier la liste entière.
Si quelqu'un voit le truc, toutes les remarques sont les bienvenues !
Pour ajouter un élément, au début ou à la fin de la liste, il est nécessaire d'agrandir cette liste. Si on ne veut utiliser ni 'new', ni 'malloc' (ou une fonction de ce type), alors il n'y a pas d'autre issue que 'segment fault' !
Bonne réflexion.
Bonne réflexion.
watou
Messages postés
199
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
19 avril 2013
28
5 oct. 2009 à 00:48
5 oct. 2009 à 00:48
ton problème c'est que la variable Node que tu déclares dans les fonctions add2 et add3 sont détruites à la fin d'execution de ces dernières! donc ton pointeur "pnt" pointe un élément détruit (cet espace mémoire n'apprtient plus à ton programme!)
pour ajouter des éléments dans ta liste tu es obligé de faire des allocations mémoire dynamiques.
tu peux utiliser l'opérateur new ou la fonction malloc().(il y en a d'autres...)
syntaxe:
quelques remarques:
- il vaux mieux utiliser NULL que 0 pour les pointeur.
- pour transmettre un pointeur à une fonction:
- il vaux mieux déclarer filename comme etant char[taille_max].
-pour le reste tu te débrouilles pas mal.
pour ajouter des éléments dans ta liste tu es obligé de faire des allocations mémoire dynamiques.
tu peux utiliser l'opérateur new ou la fonction malloc().(il y en a d'autres...)
syntaxe:
pointeur = new Node ; pointeur = (* Node)malloc(sizeof(Node));
quelques remarques:
- il vaux mieux utiliser NULL que 0 pour les pointeur.
pointeur = NULL;
- pour transmettre un pointeur à une fonction:
void Add1( Node * flist )au lieu de
void Add1( Node *&flist )
- il vaux mieux déclarer filename comme etant char[taille_max].
-pour le reste tu te débrouilles pas mal.