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 :

adressage de pointeur en C++


Sujet :

C++

  1. #1
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut adressage de pointeur en C++
    Bonjour

    Je n'arrive pas à obtenir les bonnes valeur dans un mouvement de pointeurs
    Je pense que je n'ai pas la bonne formule d'adressage.
    A l’entrée ptrChunk reçoit (et c’est correct) un pointeur sur une structure
    La structure comprend :
    ulChunkID
    ListWord {{03E852FA}}
    ChunkType
    ptrListWord est affecté de {03E85904} ce qui ne convient pas. Je voudrais obtenir 03E852FA
    comment dois-je coder l'affectation de ptrListWord ?
    les déclarations sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        std::list <CAnalysedChunk *>::iterator itListChunk;
        CAnalysedChunk * ptrChunk;
    et le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
           ptrChunk = *itListChunk;
           std::list <CAnalysedWord *> ptrListWord = ptrChunk->ListWord;
           itListWord = ptrListWord.begin();
    Je suis preneur de tout conseil

  2. #2
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::list <CAnalysedWord *> ptrListWord = ptrChunk->ListWord;
    ptrListWord n'est pas un pointeur. De même que ListWord.
    Ce que tu fais ici en fait est une simple copie de la liste.

    Pour faire pointer ptrListWord vers ptrChunk->ListWord, tu utilises '&' pour récupérer son adresse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
           ptrChunk = *itListChunk;
           std::list <CAnalysedWord *>* ptrListWord = &ptrChunk->ListWord;
           itListWord = ptrListWord->begin();
    Que je préfère écrire comme ça si tu n'as pas besoin de pointeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
           ptrChunk = *itListChunk;
           std::list <CAnalysedWord *>& ptrListWord = ptrChunk->ListWord;
           itListWord = ptrListWord.begin();

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    J'avoue que je ne comprend pas très bien ce que vous voulez faire.
    Mais surtout il y a une chose qui m'étonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           std::list <CAnalysedWord *> ptrListWord = ptrChunk->ListWord;
    signifie que ptrChunk est une zone de mémoire adressable par un pointeur qui s'appelle *ptrChunk.
    Si on veut avoir la valeur de ce pointeur on va faire
    Val=*ptrChunk
    Mais sauf recherche d'erreur, cela n'a pas d'intérêt pratique. Ce qui est intéressant est que la machine sache que ce qui se trouve à la position *ptrChuk pointe sur une structure dont on peut lire les membres en faisant
    ptrChunk->membre

    Le réponse de JulienDuSud est arrivée entre-temps. Et je ne pense pas que les réponses soient contradictoires.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Les pointeurs ont l'air brut. Une copie que tu n'as pas anticipée peut éventuellement amenée la destruction d'un de tes pointeurs dans son destructeur rendant des données invalides. Souvent, quand tout un coup une variable n'a plus la valeur qu'on attendait, c'est un problème de ce type.
    Premier conseil : pointeurs intelligents ou à minima interdire la copie de tes classes contenant des pointeurs nus.

  5. #5
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Ce que j'ai fait pour que ça marche
    Bonjour, et merci à 3DArchi pour sa réponse rapide
    J'ai compris ton 1° message il fallait donner l'adresse
    de fait avec ça, ça marche
    j'ai regardé la suite...sans tout comprendre... j'y reviendrai donc
    merci, à plus et c'est vraiment

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

Discussions similaires

  1. Ré-adressage par pointeurs
    Par Amnael dans le forum Débuter
    Réponses: 4
    Dernier message: 22/02/2014, 02h41
  2. Pointeurs et adressage aléatoire
    Par LordAeron dans le forum Débuter
    Réponses: 3
    Dernier message: 07/04/2011, 17h05
  3. adressage d un pointeur
    Par Master55 dans le forum C
    Réponses: 2
    Dernier message: 11/05/2007, 20h41
  4. djgpp et pointeurs far
    Par elvivo dans le forum C
    Réponses: 2
    Dernier message: 13/07/2002, 00h44

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