Langage C

Résolu
mrism000 Messages postés 47 Statut Membre -  
mrism000 Messages postés 47 Statut Membre -
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 19031 Statut Modérateur 3 020
 
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 47 Statut Membre
 
mais il faut savoir l'adresse du 1er element n'est c po ?
0
mrism000 Messages postés 47 Statut Membre
 
et puisque faut po mettre sizeof(*Liste) . je dois faire donc sizeof(Liste) ?
0
KX Messages postés 19031 Statut Modérateur 3 020
 
C'est surtout qu'il faut mettre un L majuscule pour correspondre au nom Liste de ton type.
0
mrism000 Messages postés 47 Statut Membre
 
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 11653 Statut Contributeur 1 847
 
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