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 :

Pointeur de structure C++


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Pointeur de structure C++
    Bonjour,

    Je souhaite sortir de ma boucle quand un pointer NULL,
    Quand j'essaye, je ne sors pas de ma boucle mais je ne sais pas pourquoi
    avez vous une idée ?
    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
     
    typedef struct T_Params T_Params;
    struct T_Params
    {
    	__int64 CodedValue; 
    	struct T_Params *p_next;
    };
     
    iint64 temp;
    T_Params *Message = XXX; // pointe vers la meme structure structure
     
     
    do
    {
    	if(Message->CodedValue != NO_VALUE)	
    	{
                    temp = Message->CodedValue;
    	        // do specific case 
    		Message = Message->p_next; 
    	}
    	else
    	{
    		// take another value
    		Message = Message->p_next; 
    	}	
    }
    while(Message != NULL);

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Il doit y avoir quelque chose de pourri dans ta liste chaînée.

    Poste le code qui la construit.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    Primo, méfie toi déjà d'une boucle do... while, car la logique qu'elle contient sera d'office exécutée, même si le premier élément venait à être NULL (ce qui occasionnera de très sérieux problèmes.

    Ensuite, il faut t'assurer que le pointeur qui se trouve dans la structure est bien initialisé à NULL lorsqu'il n'y a pas d'élément suivant, et que sa valeur ne correspond pas à "des crasses d'une utilisation antérieure de la mémoire".

    Le pointeur sur l'élément suivant doit donc etre, par défaut, initialisé à NULL, vu que, typiquement, quand tu ajoute un élément, l'élément suivant n'existe pas encore
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut et...
    Peut etre eviter le mot struct plutot reservé au C . je m'abstiendrais de d'autre reponses en raison de mon niveau encore debutant en c++
    Allez le RC LEns

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Citation Envoyé par tamtam64 Voir le message
    Peut etre eviter le mot struct plutot reservé au C . je m'abstiendrais de d'autre reponses en raison de mon niveau encore debutant en c++
    Absolument pas!!!

    Le mot clé struct est tout aussi légal en C++ qu'en C, et l'on peut utiliser l'un comme l'autre dans de très nombreuses circonstances.

    La seule différence réelle qui existe entre le mot clé struct et le mot clé class en C++ (car cela peut être différent pour d'autres langages), c'est la visibilité par défaut des membres et de l'héritage: Alors que le mot clé struct occasionnera par défaut (comprends : en dehors de toute indication contraire) un héritage et des membres publiques, le mot clé class occasionnera par défaut un héritage et des membres privés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    struct MaStruct{
        /* les membres sont publiques par défaut */
        int mbrePublic;
        /* mais on peut les indiquer comme étant privés */
        private:
            int mbrePrivate;
    };
    class MaClass{
        /* les membres sont privés par défaut */
        int mbrePrivate;
        /* mais on peut les indiquer comme étant publiques */
        public:
            int mbrePublic;
    };
    seront deux structures strictement identiques en terme de nombre et de nom de leurs membres (il y aura une légère différence au niveau de la mémoire utilisée dans le sens où membrePublic sera le premier membre à être créé pour MaStruct et le deuxième pour MaClass, à cause de l'ordre d'initialisation, mais, à part cette particularité, ce seront vraiment deux structures parfaitement semblables).

    Maintenant, il arrive régulièrement que l'on préfère utiliser le mot clé class dés que l'on a affaire à un type dont les membres sont privés par défaut et restreindre l'utilisation du mot clé struct aux structures de type POD, mais il n'y a strictement aucune obligation sur le sujet, et cela fait plutôt partie des "manies de développeurs" qu'autre chose
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut bon je ...
    bon je vais repartir dans mes livres
    un bon utilisateur de c++ m'a conseillé d'utiliser class, et donc effectivement je l'ai pris pour argent comptant c'est pour ça après les deux se disent effectivement, en tout cas très bonne réponse on sent le modérateur, t'as pas eu tes étoiles en cadeau c'est indéniable
    Allez le RC LEns

  7. #7
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Citation Envoyé par tamtam64 Voir le message
    bon je vais repartir dans mes livres
    un bon utilisateur de c++ m a conseillé d'utiliser class , et donc effectivement je l ai pris pour argent comptant c est pour ca apres les deux se disent effectivement , en tt cs tres bonne reponse on sent le moderateur , t as pas eu tes etoiles en cadeau c est indeniable
    A vrai dire, si... on est venu me les proposer...

    J'ai été coopté en quelques sortes
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Réponses: 60
    Dernier message: 13/02/2007, 19h53
  2. [C#]Pointeur vers structure
    Par torNAdE dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/05/2006, 19h43
  3. Réponses: 7
    Dernier message: 08/04/2006, 12h18
  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