Langage C

Résolu
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) 
.


1 réponse

  1. Modérateur
    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
    1. mais il faut savoir l'adresse du 1er element n'est c po ?
    2. et puisque faut po mettre sizeof(*Liste) . je dois faire donc sizeof(Liste) ?
    3. Modérateur
      C'est surtout qu'il faut mettre un L majuscule pour correspondre au nom Liste de ton type.
    4. nn nn j'ai fait Liste *liste = malloc(sizeof(*liste));
      et Element *element = malloc(sizeof(*element));

      dans un autre prg et ca a marché
    5. Contributeur
      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.