Langage C

Résolu
mrism000 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -  
mrism000 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -
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. 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
    1. mrism000 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
       
      mais il faut savoir l'adresse du 1er element n'est c po ?
      0
    2. mrism000 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
       
      et puisque faut po mettre sizeof(*Liste) . je dois faire donc sizeof(Liste) ?
      0
    3. 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
    4. mrism000 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    5. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   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