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 :

Petit renseignement pointeur


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut Petit renseignement pointeur
    Bonsoir ,

    J'ai un petit soucis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int x =1
    int z, *px, *py; 
    px= &x; 
    *px *= 2;
    La derniere fait que *px vaut 2 , or j'aurai dis 1 ...Pourquoi ?
    *px *=2 , on a comme type un pointeur sur un pointeur ici ?
    Dernière modification par JolyLoic ; 21/11/2012 à 23h57. Motif: Balises code (#). Merci de les utiliser

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    En plus de la modification, * veut dire deux choses distinctes :
    - Dans une déclaration, il dénote un pointeur sur un type int* p; : p est de type pointeur sur entier.
    - Dans une expression, il indique que l'on accède à la valeur pointée : *p = 3; : Je déréférence le pointeur, afin d'accéder à la valeur pointée, et de la modifier pour qu'elle vaille 3.

    Est-ce que ça clarifie la situation (si non, c'est peut-être que j'ai mal compris la question )
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    En plus de la modification, * veut dire deux choses distinctes :
    - Dans une déclaration, il dénote un pointeur sur un type int* p; : p est de type pointeur sur entier.
    - Dans une expression, il indique que l'on accède à la valeur pointée : *p = 3; : Je déréférence le pointeur, afin d'accéder à la valeur pointée, et de la modifier pour qu'elle vaille 3.

    Est-ce que ça clarifie la situation (si non, c'est peut-être que j'ai mal compris la question )
    Il faut surtout dire que lorsque « * » ne désigne pas un pointeur, c'est qu'il s'agit de l'opérateur de multiplication ! :-)

    Donc, ici, « n *= 2 » est équivalent à « n = n * 2 ». Comme px pointe sur x et que x valait déjà « 1 », elle vaut « 2 » après l'opération.

Discussions similaires

  1. [PHP-JS] Petit renseignement sur une fonction
    Par jlb59 dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2008, 19h46
  2. Petit renseignement concernant WireShark svp ?
    Par hélios44 dans le forum Administration
    Réponses: 6
    Dernier message: 07/09/2007, 19h26
  3. Réponses: 5
    Dernier message: 25/07/2007, 12h03
  4. petit renseignement au sujet de new[]
    Par manowar dans le forum C++
    Réponses: 7
    Dernier message: 03/02/2006, 20h24

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