Langage C

Résolu/Fermé
mrism000 Messages postés 34 Date d'inscription dimanche 29 avril 2012 Statut Membre Dernière intervention 18 novembre 2012 - 7 mai 2012 à 23:39
mrism000 Messages postés 34 Date d'inscription dimanche 29 avril 2012 Statut Membre Dernière intervention 18 novembre 2012 - 8 mai 2012 à 01:05
Slt les amis

je veux creer une liste chainée j'ai declaré sa structure , mais quand je declare la liste comme variable globale car je veux faire des fcts qui utilisent cette liste il me donne une erreur :/

voila le code

typedef struct Element Element;
struct Element
{
char nom_prg;
int nombre;
Element *suivant;
};

typedef struct Liste Liste;
struct Liste
{
Element *premier;
};

Liste *liste = malloc(sizeof(*liste));
.
.   la suite du prg (des fct) 
.



A voir également:

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 8/05/2012 à 00:07
Ne serait-ce pas plutôt sizeof(*Liste) ?

Et sauf erreur (il faudrait vérifier), tu dois pouvoir faire plus court, comme ceci :

typedef struct Element
{
    char nom_prg;
    int nombre;
    Element *suivant;
} *Liste;
La confiance n'exclut pas le contrôle
0
mrism000 Messages postés 34 Date d'inscription dimanche 29 avril 2012 Statut Membre Dernière intervention 18 novembre 2012
8 mai 2012 à 00:16
mais il faut savoir l'adresse du 1er element n'est c po ?
0
mrism000 Messages postés 34 Date d'inscription dimanche 29 avril 2012 Statut Membre Dernière intervention 18 novembre 2012
8 mai 2012 à 00:19
et puisque faut po mettre sizeof(*Liste) . je dois faire donc sizeof(Liste) ?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
8 mai 2012 à 00:22
C'est surtout qu'il faut mettre un L majuscule pour correspondre au nom Liste de ton type.
0
mrism000 Messages postés 34 Date d'inscription dimanche 29 avril 2012 Statut Membre Dernière intervention 18 novembre 2012
8 mai 2012 à 00:27
nn nn j'ai fait Liste *liste = malloc(sizeof(*liste));
et Element *element = malloc(sizeof(*element));

dans un autre prg et ca a marché
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
8 mai 2012 à 00:29
KX,
non c'est bien sizeof(*liste) ou alors sizeof(Liste) mais c'est pareil vu que *liste est de type Liste, ils ont la même taille. L'avantage de *liste est que c'est plus portable s'il change le type de la variable.
0