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 :

Problème de pointeurs


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Par défaut Problème de pointeurs
    Bonjour à tous,
    j'ai un pbm que je n'arrive pas à résoudre tout seul car je ne le comprend pas.
    J'ai une fonction ou je transmet en paramètre l'adresse d'une structure (composé de pointeurs)
    L2 = Additions(&Autre);
    "Autre" est une structure composé de plusieurs pointeurs
    Je ne veux pas changer la valeur de ces pointeurs alors je les stockes ds d'autres variables du mm types pour pouvoir les modifier.
    r1 = Autre->rp_L1;
    r2 = Autre->rp_L2;
    rpL = Autre->rp_L;

    Or mon problème est qu'à la fin mm de la fonction, toutes les valeurs ont été modifié. Comme si r1 et Autre->rp_L1 était toujours égale alors que je n'ai jms touché à Autre->rp_L1.

    Merci bcp de votre aide

  2. #2
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par Fredo123456 Voir le message
    Bonjour à tous,
    j'ai un pbm que je n'arrive pas à résoudre tout seul car je ne le comprend pas.
    J'ai une fonction ou je transmet en paramètre l'adresse d'une structure (composé de pointeurs)
    L2 = Additions(&Autre);
    "Autre" est une structure composé de plusieurs pointeurs
    Je ne veux pas changer la valeur de ces pointeurs alors je les stockes ds d'autres variables du mm types pour pouvoir les modifier.
    r1 = Autre->rp_L1;
    r2 = Autre->rp_L2;
    rpL = Autre->rp_L;

    Or mon problème est qu'à la fin mm de la fonction, toutes les valeurs ont été modifié. Comme si r1 et Autre->rp_L1 était toujours égale alors que je n'ai jms touché à Autre->rp_L1.

    Merci bcp de votre aide
    Je n'ai absolument rien compris....
    Postes un bout de code qui montre le problème.

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Fredo123456 Voir le message
    .
    r1 = Autre->rp_L1;
    r2 = Autre->rp_L2;
    rpL = Autre->rp_L;
    Tu le dis toi même, r1 et Autre->rp_L1 sont égaux, donc si r1 et Autre->rp_L1 sont 2 pointeurs, ils pointent tous les 2 vers la même zone mémoire.

    Que tu modifies cette zone en utilisant r1 ou Autre->rp_L1 n'a aucune importance, la zone mémoire est quand même modifiée.

    Dupliquer un pointeur n'est pas dupliquer la zone mémoire pointée.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Par défaut
    LOL dsolé je recommence en plus clair... (enfin je vais essayé)

    J'appelle une fonction : L2 = Additions(&Autre);
    En envoyant l'adresse d'une structure Autre.

    Dans la structure j'ai 3 paramètres: rp_L1, rp_L2, rp_L.

    J'envoie l'adresse de ma structure car j'ai besoin de récupérer la valeur de rpL soit de Autre->rpL en écrivant à la dernière ligne de ma fonction Autre->rp_L = rpL.

    Dans la fonction, je n'ai pas envie de perdre la donné de ces 3 paramètres donc j'initialise 3 variables r1, r2, rpL.
    r1 = Autre->rp_L1;
    r2 = Autre->rp_L2;
    rpL = Autre->rp_L;

    Or a la fin de ma fonction, les données de ma structure on été modifié. Je ne sais pas pk car je ne les ai pas touché.

    J'espère avoir été plus claire.. sinon c'est pas grave j'essayerais de me débrouillé autrement.

    Merci en tout cas de votre aide

  5. #5
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Par défaut
    A mince... et est ce que vous avez une autre idée pr que je puisse obtenir la valeur de Autre->rpL sans pr autant le retourner ?
    Sinon tant pis je vais devoir changer une bonne partie de mon code.
    Merci d'avance

  6. #6
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 142
    Par défaut
    Bonsoir,

    Comme la préciser ramm-0000, tu as crée un pointeur de plus. Or tes 2 pointeur pointe tous les 2 sur la même cellule mémoire, donc que tu utilise l'un ou l'autre les 2 vont pointeur et changer la cellule mémoire en question.

    Sinon dans l'entête de ta fonction Addition ne met pas de pointeur si tu veut la retrouver à son état d'origine.

    Cela serait bien si tu pouvais nous détailler le rôle de ta fonction afin qu'on puisse comprendre le pourquoi du comment

Discussions similaires

  1. Problème de pointeurs..embrouillé
    Par Frenchy dans le forum C++
    Réponses: 11
    Dernier message: 10/03/2005, 16h33
  2. Problème de pointeur avec un TQuery
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/01/2005, 13h57
  3. Problème de pointeur
    Par toma_lille dans le forum C++
    Réponses: 1
    Dernier message: 07/12/2004, 21h26
  4. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50
  5. TBitmap et problèmes de pointeurs...
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/07/2003, 13h39

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