IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Allocation dynamique tableau dans structure


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 57
    Points : 35
    Points
    35
    Par défaut Allocation dynamique tableau dans structure
    Salut à tous,

    Sauriez vous me dire comment allouer dynamiquement un tableau dans une structure ?

    J'arrive à faire l'essentiel mais dans la structure je n'y arrive pas, voici un exemple de code qui illustre le probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct  /* Déclaration de notre structure */
    {
        char nom[30];
        char code;
        int cotes[];
    }Element;
    Element *Pelm;
     
    Pelm=malloc(4 * sizeof(int));
    ==> jusque là ça va, mais quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pelm[i].cotes=malloc(3 * sizeof(int));
    Là j'ai une erreur de type C2106.

  2. #2
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    c'est normal c'est un tableau, pas un pointeur (tu peux pas rediriger son adresse)
    Soit tu l'initialises d'entrée (int tab[10])
    Soit tu fais un pointeur (int *tab)
    Soit tu as un compilateur qui accepte la norme c99 et tu peux faire int tab[n], n une variable (enfin je crois)

    dans tous les cas une lecture attentive d'une doc sur les tableaux/pointeurs serait bien.

  3. #3
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par chental
    Salut à tous,

    Sauriez vous me dire comment allouer dynamiquement un tableau dans une structure ?

    J'arrive à faire l'essentiel mais dans la structure je n'y arrive pas, voici un exemple de code qui illustre le probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct  /* Déclaration de notre structure */
    {
        char nom[30];
        char code;
        int cotes[];
    }Element;
    Element *Pelm;
    [EDIT] Et bien sûr, l'element cotes doit être défini comme ceci:
    [/EDIT]

    Peut-être parce que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Pelm=malloc(4 * sizeof(int));
    Serait mieux en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Pelm=malloc(4 * sizeof(*Pelm));
    Jc

Discussions similaires

  1. Allocation dynamique tableau
    Par dream_of_australia dans le forum Débuter
    Réponses: 16
    Dernier message: 24/09/2009, 23h15
  2. allocation dynamique d'une structure static
    Par Asmod_D dans le forum C++
    Réponses: 4
    Dernier message: 01/04/2009, 11h22
  3. tableau dans structure
    Par tom31 dans le forum C++
    Réponses: 2
    Dernier message: 06/03/2008, 15h32
  4. Allocation dynamique: Tableau de pointeur sur char
    Par Anonymouse dans le forum Débuter
    Réponses: 4
    Dernier message: 21/10/2007, 10h57
  5. Réponses: 8
    Dernier message: 14/12/2006, 23h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo