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 :

Affectation et passage de parametres d'un tableau de pointeur de pointeur de structur


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Points : 124
    Points
    124
    Par défaut Affectation et passage de parametres d'un tableau de pointeur de pointeur de structur
    Bonjour,

    Sous gcc, je souhaite déclarer un tableau de pointeur de pointeur de structres, affecter puis passer ce tableau en paramètre de sortie d'un procédure.

    La définition du nombre de pointeur de structures se fait grâce à un pointeurs.
    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    int ptrNombre[5];
     
    typedef struct
    {
      INT32 lDataId;         
      DWORD dwDataAddress;   
     
    }S_STRUCTURE;
     
    S_STRUCTURE **  Get_Nbr_Struct(void);
     
    int main (void)
    { 
      S_STRUCTURE ** sppStrucutre;
      ptrNombre[2] = 500;
     
      sppStrucutre = Get_Nbr_Struct();
     
      return (TRUE);
    }
     
    S_STRUCTURE **  Get_Nbr_Struct(void)
    {
      static S_STRUCTURE * ppsStructure2[ptrNombre[2]];
     
      ppsStructure2[0].lDataId = 100;
      ppsStructure2[0].dwDataAddress = 200;
     
      return (ppsStructure2);
    }
    Et comme erreur j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    storage size of 'ppsStructure2' isn't constant
    size of variable  'ppsStructure2' is too large

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par fveysseire
    <...> je souhaite déclarer un tableau de pointeur de pointeur de structres, affecter puis passer ce tableau en paramètre de sortie d'un procédure.

  3. #3
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par fveysseire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    S_STRUCTURE **  Get_Nbr_Struct(void)
    {
      static S_STRUCTURE * ppsStructure2[ptrNombre[2]];
    ...
    Et comme erreur j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    storage size of 'ppsStructure2' isn't constant
    Tu n'as pas la possibilité de déclarer un tableau avec comme taille une variable en C ...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    C'est si navrant que ca Emmanuel ...?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par femtosa
    Tu n'as pas la possibilité de déclarer un tableau avec comme taille une variable en C ...
    Tu veux dire que je dois passer par de l'allocation dynamique ...

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par fveysseire
    Tu veux dire que je dois passer par de l'allocation dynamique ...
    Ce serait préférable oui, surtout si tu compte le faire retourner par ta fonction !

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Citation Envoyé par femtosa
    Tu n'as pas la possibilité de déclarer un tableau avec comme taille une variable en C ...
    Possible uniquement en C99 (Variable-length Arrays)

    Mais ce code ne montre pas un tableau de pointeurs de pointeur de structures : Juste un pointeur de pointeurs de structures.
    En fait, c'est un tableau de pointeurs de structures qu'on tente (mal) de retourner.

  8. #8
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par fveysseire
    Tu veux dire que je dois passer par de l'allocation dynamique ...
    Et oui ...

Discussions similaires

  1. passage par référence d'un tableau en parametre de fonction
    Par crazykangourou dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/01/2009, 14h30
  2. passage par parametre d'un double tableau
    Par nakac dans le forum C
    Réponses: 2
    Dernier message: 21/12/2008, 03h27
  3. Réponses: 11
    Dernier message: 27/06/2007, 15h06
  4. Passage en parametre d'un tableau
    Par hak5 dans le forum C
    Réponses: 3
    Dernier message: 13/01/2006, 11h32
  5. Réponses: 13
    Dernier message: 13/10/2005, 16h03

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