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 :

Déclaration de structures et pointeurs de structure


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Août 2010
    Messages : 86
    Points : 84
    Points
    84
    Par défaut Déclaration de structures et pointeurs de structure
    Bonjour,
    Dans le cadre d'un petit projet de fac, je dois faire un algorithme permettant de transformer un automate à état fini non déterministe en automate à état fini déterministe.
    Je vous passe les détails.
    Je dois donc délarer 2 structures : etat et transition qui modèliseront mon automate.

    Mais je suis confronté à un petit soucis. Ma structure "etat" à besoin de ma structure "transition" et vice versa.
    J'ai donc du procéder de la manière suivante :

    Contenu de etat.h :

    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
    #ifndef _ETAT_H
    #define _ETAT_H
     
    #include <stdlib.h>
    #include "transition.h"
     
    //Structure
    typedef struct etat
    {
    	int estFinal;
    	struct transition* ptrTransition;
    }etat;
     
    //Procédure et fonctions
    void addTransition(etat* e, struct transition* t); 
     
    #endif
    Contenu de transition.h :

    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
    #ifndef _TRANSITION_H
    #define _TRANSITION_H
     
    #include <stdlib.h>
    #include "etat.h"
     
    //Structure
    typedef struct transition
    {
    	struct transition* transitionSuivante;
    	struct etat* ptrEtat;
    	char* type;
    }transition;
     
    //Procédure et fonctions
     
    #endif
    Cette solution fonctionne mais j'aimerais savoir comment déclarer au mieux mes structures car il y a plusieurs façons possibles de les déclarer. Ma façon m'oblige à mettre le mot clé struct devant les argument de pointeurs de structure dans mes fonctions et je suis sûr qu'on peut faire sans.

    Par exemple dans etat.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void addTransition(etat* e, struct transition* t);
    Merci et bonne journée/soirée !

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Peut être comme ceci :
    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
    #ifndef _TRANSITION_H
    #define _TRANSITION_H
    /*-------------------------------*/
    #include "etat.h"
    /*-------------------------------*/
    typedef struct etat etat;
    typedef struct transition  transition;
    /*-------------------------------*/
    //Structure
    struct transition
    {
    	transition* transitionSuivante;
    	etat* ptrEtat;
    	char* type;
    };
    /*-------------------------------*/
    //Procédure et fonctions
    void fonc(etat* e, transition* t);
    #endif
    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
    #ifndef _ETAT_H
    #define _ETAT_H
    /*-------------------------------*/
    #include "transition.h"
    /*-------------------------------*/
    typedef struct transition  transition;
    typedef struct etat etat;
    /*-------------------------------*/
    //Structure
    struct etat
    {
    	int estFinal;
    	transition* ptrTransition;
    };
    /*-------------------------------*/
    //Procédure et fonctions
    void addTransition(etat* e, transition t);
     
    #endif
    Note : Eviter d'utiliser les identificateurs commençant par _ et suivis d'une majuscule ou d'un autre _ . Ils sont réservés pour des usages à venir par la norme.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/03/2013, 10h15
  2. [JNA] - Pointeur de structure dans une autre structure
    Par John.BE dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 24/02/2012, 15h02
  3. Pointeur de structure de pointeurs.
    Par onodi dans le forum C
    Réponses: 4
    Dernier message: 20/02/2010, 17h57
  4. Pointeurs et structures...
    Par vinzzzz dans le forum C
    Réponses: 13
    Dernier message: 18/01/2006, 11h37
  5. probleme avec pointeurs de structures
    Par remi77 dans le forum C
    Réponses: 2
    Dernier message: 20/10/2003, 13h19

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