Des listes en C.. - C - Programmation
Marsh Posté le 16-06-2012 à 13:33:00
Vu que le bout de code que tu montres en image n'est pas l'endroit ou ça plante, que l'on n'a pas ton code, et que nos boules de cristal n'ont pas la puissance nécessaire, il n'est pas possible de te dire les raisons du plantage.
A+,
Marsh Posté le 16-06-2012 à 14:49:27
Non mais dans ce cas là ce ne plante pas, je voudrais juste savoir pourquoi en créant juste une variable de type Liste, il y a dans le champ li une valeur..
Marsh Posté le 16-06-2012 à 17:13:11
Ça veut dire quoi pour toi "en créant juste une variable de type Liste"?
A+,
Marsh Posté le 16-06-2012 à 17:15:27
Liste L=(Liste)malloc(sizeof(Cellule));
Ce qu'il y a sur le screen
Marsh Posté le 16-06-2012 à 19:21:37
Eh bien ton malloc associe une zone mémoire à L, en lui donnant la valeur de l'adresse de cette zone mémoire.
Mais cette zone mémoire est donnée en l'état, les octets dedans ont déjà des valeurs, et ça va induire des valeurs pour les champs de ta cellule.
Pour pallier à cela, après allocation,
- soit tu met à 0 (ou une valeur de convention) tes champs
- soit tu utilises calloc, qui met à 0 les octets de la zone allouée
A+,
Marsh Posté le 16-06-2012 à 13:25:43
Bonjour!
Je travaille actuellement sur un projet en C consistant à créer un petit jeu de nim (sous forme de damier).
Bref, nous devons donc travailler avec des listes et pointeurs.
J'ai crée une fonctions permettant d'afficher la liste des cases adjacentes d'un pion donné sauf que voilà j'ai un petit soucis.
Tout se compile parfaitement, mais plantage complet à l'exécution. J'ai donc truffé le code de balises pour localiser et voilà ce qui en sort :
Uploaded with ImageShack.us
Voici la structure de la liste :
En fait, je ne fais qu'allouer de la mémoire pour une variable de type liste et voilà que le champ li contient par défaut une valeur..
En regardant des exos déjà fait, je vois qu'on peut simplement déclarer :
Liste L;
ou encore :
Liste L=NULL;
Seulement j'ai essayé, là le programme plante instantanément.
Je ne comprends pas...
Si vous pourriez m'apporter des précision à ce sujet, je vous en serai reconnaissante!
Merci d'avance