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 de structure


Sujet :

C

Vue hybride

malves Allocation dynamique de... 27/10/2006, 15h42
Faiche t_op *op_priorities;... 27/10/2006, 16h26
Emmanuel Delahaye Non, au contraire. ... 27/10/2006, 16h48
Emmanuel Delahaye Oui, ou alors, il faut... 27/10/2006, 16h55
malves Merci pour l'astuce :D 02/11/2006, 11h58
Stevie Wonder Ca sent encore le ptit gars... 02/11/2006, 12h07
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Par défaut Allocation dynamique de structure
    Bonjour,

    J'aimerai savoir si l'un d'entre vous sait comment je peux declarer, allouer et initialiser un tableau de structures.

    En fesant ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    t_op gl_operators[] = {                                                                           
      {' ', my_plus, 1},                                                                              
      {' ', my_moin, 1},                                                                              
      {' ', my_mul, 2},                                                                               
      {' ', my_mod, 2},                                                                               
      {' ', my_div, 2},                                                                               
      {0, 0, 0}                                                                                       
    };
    tout marche correctement mais lorsque je tente de faire de cette maniere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    t_op  *op_priorities;
    op_priorities = (t_op *)malloc(sizeof(*op_priorities) * 7);
    op_priorities = {                                                                               
        {op_base[1], my_plus, 1},                                                                     
        {op_base[2], my_moin, 1},                                                                     
        {op_base[3], my_mul, 2},                                                                      
        {op_base[4], my_mod, 2},                                                                      
        {op_base[5], my_div, 2},                                                                      
        {0, 0, 0} 
    };
    j'ai un parse error ...

    pareille si j'essayer d'initialiser ligne par ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    op_priorities[0] = {op_base[1], my_plus, 1};
    Je suis obliger d'initialiser champ par champ ??

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    t_op  *op_priorities;
    op_priorities = (t_op *)malloc(sizeof(*op_priorities) * 7);
    sizeof (*op_priorities) ?? y a rien qui te choque ?

    Et puis si tu alloues un tableau de pointeur, n essaye pas d y mettre des structures.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Faiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    t_op  *op_priorities;
    op_priorities = (t_op *)malloc(sizeof(*op_priorities) * 7);
    sizeof (*op_priorities) ?? y a rien qui te choque ?
    Non, au contraire.

    http://emmanuel-delahaye.developpez....tes.htm#malloc

    mais au risque de te choquer encore plus, je l'aurais écrit comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t_op  *op_priorities = malloc (sizeof *op_priorities * 7);
    Et puis si tu alloues un tableau de pointeur, n essaye pas d y mettre des structures.
    C'est bel et bien un tableau de 7 structures qui a été alloué tout à fait régulièrement. Il n'y a rien à redire sur cette partie du code de l'OP.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par malves
    Bonjour,

    J'aimerai savoir si l'un d'entre vous sait comment je peux declarer, allouer et initialiser un tableau de structures.

    En fesant ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    t_op gl_operators[] = {                                                                           
      {' ', my_plus, 1},                                                                              
      {' ', my_moin, 1},                                                                              
      {' ', my_mul, 2},                                                                               
      {' ', my_mod, 2},                                                                               
      {' ', my_div, 2},                                                                               
      {0, 0, 0}                                                                                       
    };
    tout marche correctement mais lorsque je tente de faire de cette maniere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    t_op  *op_priorities;
    op_priorities = (t_op *)malloc(sizeof(*op_priorities) * 7);
    op_priorities = {                                                                               
        {op_base[1], my_plus, 1},                                                                     
        {op_base[2], my_moin, 1},                                                                     
        {op_base[3], my_mul, 2},                                                                      
        {op_base[4], my_mod, 2},                                                                      
        {op_base[5], my_div, 2},                                                                      
        {0, 0, 0} 
    };
    j'ai un parse error ...

    pareille si j'essayer d'initialiser ligne par ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    op_priorities[0] = {op_base[1], my_plus, 1};
    Je suis obliger d'initialiser champ par champ ??

    Merci
    Oui, ou alors, il faut définir un tableau de structures initialisée et faire une copie.
    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
     
    {
       t_op  *op_priorities = malloc (sizeof *op_priorities * 6);
       if (op_priorities != NULL)
       {
          /* initialisation */
          {
             /* tableau de structures initialisee en lecture seule */
             static t_op const z[] = 
             {                                                                           
               {' ', my_plus, 1},                                                                              
               {' ', my_moin, 1},                                                                              
               {' ', my_mul, 2},                                                                               
               {' ', my_mod, 2},                                                                               
               {' ', my_div, 2},                                                                               
               {0, 0, 0}                                                                                       
             };
              /* recopie */
             *op_priorities = z;
          }
     
          /* ... suite ... */
       }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Par défaut
    Merci pour l'astuce

  6. #6
    Membre averti Avatar de Stevie Wonder
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut
    Ca sent encore le ptit gars d'EPITECH ca Tous les ans a la meme periode ce forum voit debouler des gens avec le meme genre de questions :p

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/05/2014, 20h25
  2. Réponses: 7
    Dernier message: 02/09/2009, 22h39
  3. Réponses: 67
    Dernier message: 13/02/2007, 18h08
  4. Allocation dynamique tableau dans structure
    Par chental dans le forum C
    Réponses: 2
    Dernier message: 03/08/2006, 09h03
  5. Allocation dynamique de structures
    Par fr_knoxville dans le forum C
    Réponses: 8
    Dernier message: 06/05/2003, 21h59

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