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 :

struct ?


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 277
    Par défaut struct ?
    Bonjour. J'ai créé une structure de donnée de type pile. Dans la declaration de la fonction, j'ai le choix entre :

    int est_vide(struct pile *une_pile) <<- (1)
    ou
    int est_vide(pile* une_pile); <<- (2)

    Quelle est la difference ? Est-ce que ca se passe au niveau memoire ?


    Merci d'avance

  2. #2
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 379
    Billets dans le blog
    1
    Par défaut
    Aucune différence niveau mémoire. La différence, c'est que en C standard, il faut préciser le struct. Ne pas le mettre est une extension au C (par exemple c'est le cas en C++). Normalement c'est une erreur de l'omettre en C, mais certains compilateurs le permettent.

    Voici un petit résumé :
    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
    struct a {
      int x;
    };
     
    struct a var1; /* correct en C et C++ */
    a var2; /* correct en C++, incorrect normalement en C */
     
    typedef struct b {
      int x;
    } b;
     
    struct b var3; /* correct en C et C++ : accès à la structure */
    b var4; /* correct en C et C++ : accès au type */
     
    /* Attention !! Certaines personnes font le code horrible suivant, dans lequel struct c != c !!! */
    /* Même si c'est possible, utiliser cette forme est très fortement déconseillé !!! */
     
    typedef struct c {
      int x;
    } * c;
     
    struct c var5; /* C et C++: définit var5 comme une structure */
    c var6; /* C et C++ : définit var6 comme un pointeur vers unes structure */

  3. #3
    Membre expérimenté Avatar de Driden
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Par défaut
    pile* est incorrect à moins que tu es fait un typedef precedement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typedef struct pile{
    ....
    }pile;
    Tant qu'on y est:
    Pour une definition pour un pointeur sur une structure pile.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 22
    Par défaut
    Et pour ça ? Est-ce correct en C et en C++, ou seulement en C++ ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct
    	{
    		int b;
    	}a;
     
    	a variable;

  5. #5
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 379
    Billets dans le blog
    1
    Par défaut
    Faire un struct sans préciser le nom de la structure est une structure sans sélecteur et il est possible d'en bénéficier en C standard tout comme en C++. Et donc la syntaxe typedef struct {...} a; est valable en C comme en C++.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 277
    Par défaut
    Merci beaucoup pour ces réponses détaillées

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mettre les termes d'un string dans une struct
    Par grand's dans le forum SL & STL
    Réponses: 17
    Dernier message: 29/11/2004, 17h43
  2. Struct et Sequence: Mapping en C++
    Par Marc_S dans le forum CORBA
    Réponses: 1
    Dernier message: 02/11/2004, 14h45
  3. qsort avec un struct* ?
    Par hpfx dans le forum MFC
    Réponses: 11
    Dernier message: 06/10/2003, 18h29
  4. Unrecognized option -fnative-struct
    Par copyallright dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 01/05/2003, 12h25
  5. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25

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