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 :

l’adresse d’une constante et le pointeur !


Sujet :

C++

Vue hybride

DLOYAS l’adresse d’une constante et... 03/01/2015, 16h25
foetus Il est magique ton... 03/01/2015, 17h04
DLOYAS j'ai rien compris! :( je... 03/01/2015, 17h30
foetus Oui le C++ est difficile... 03/01/2015, 17h41
ternel DLOYAS, il serait temps que... 03/01/2015, 17h57
DLOYAS je n'ai pas dit que je n'ai... 03/01/2015, 17h59
DLOYAS Merci Iternel c'est gentil de... 03/01/2015, 18h00
foetus C'est quand même logique... 03/01/2015, 18h11
Daïmanu Pourquoi Visual Studio... 03/01/2015, 18h22
foetus Oui tu as raison :mrgreen: ... 03/01/2015, 18h39
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    12
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : 12
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Par défaut l’adresse d’une constante et le pointeur !
    bonjour

    svp, pouvez vous m'expliquer cela ?
    ou bien de me donner des liens vers des explications ?

    Ma question est la suivante, pourquoi L’adresse d’une variable peut être attribuée à un pointeur de constante. Par contre, l’adresse d’une constante ne peut pas être attribuée à un pointeur sur lequel aucune restriction ne s’applique .

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int x = 1;
    const int y = 2;
    const int * pt1 = &x; // OK
    const int * pt2 = &y; // OK
    int * pt3 = &y; // ERREUR
    ( je pense que c'est parceque : on donne autorisation au pt3 de changer la valeur de y !? )

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Il est magique ton compilateur ... ou pas

    Parce que le mien (Visual Express C++ 2010) il me dit, même sans compiler "a value of type "cont int *" cannot be used to initialize an entity of type "int *""

    Et sinon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	int * pt3 = const_cast<int*>(&y); // OK
    	int * const pt4 = &y; // Erreur

    Et enfin

    Télécharger Visual C++ 2010 pour Windows

  3. #3
    Membre confirmé
    Homme Profil pro
    12
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : 12
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Par défaut
    j'ai rien compris!
    je devrai chercher un autre Langage de POO, En effet le c++ est vraiment difficile à comprendre ..

  4. #4
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Oui le C++ est difficile

    Mais toutes les questions que tu poses depuis 2-3 jours, ce sont des questions triviales de base dont soit tu as les réponses sur Internet facilement soit ton compilateur te dit explicitement les choses.

    C'est pour cela que ton compilateur il est magique : parce qu'il te sort aucun message compréhensif.

    À moins que tu ne te casses pas le trognon. Ou encore tu es un mormon et tu refuses de comprendre l'anglais:

    Et pour illustrer tout cela qu'est ce que tu ne comprends pas à "a value of type "cont int *" cannot be used to initialize an entity of type "int *""

    Même Google traduction te sort une phrase en vrai français "une valeur de type " int cont * " ne peut pas être utilisé pour initialiser une entité de type " int * ""

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    DLOYAS, il serait temps que tu comprennes le gros détail.

    Un compilateur est très très bête. Il essaie de faire ce que tu lui dis, mais en respectant un traité signé par de nombreux pays: la norme C++
    Donc, il faut que tu apprennes à lui dire les bonnes choses, et à lire ses réponses. C'est lui qui t'aidera le mieux.
    Pour cela, n'hésite pas à activer les warnings (l'équivalent de l'option -Wall) et à traiter chacun comme une faute.
    A chaque fois que tu es perdu dans des erreurs de code, fais une version plus petite de ton code, en enlevant des morceaux.

    En l'occurence, je t'invite à lire intégralement notre FAQ C++.

    Ainsi qu'à lire avec attention les premières pages de cppreference.com.
    Au moins tout ce qui est "Basic concepts", "Preprocessor", "Keywords", "Operator precedence" et "Fundamental types".
    Ainsi que les grands concepts d et "le langage"

    Ca te fera de la lecture, mais ca t'avancera beaucoup

  6. #6
    Membre confirmé
    Homme Profil pro
    12
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : 12
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Par défaut
    je n'ai pas dit que je n'ai pas compris la phrase en anglais, j'ai 780 points en toeic quand même.
    Ma question était pourquoi il genère une erreure, est ce parceque cette opération autoriserait le changement de la valeur de l’objet
    [on peut modifier y (* pt3 = 111) ] ou quoi ?
    En tout cas merci .

  7. #7
    Membre confirmé
    Homme Profil pro
    12
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : 12
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Par défaut
    Merci Iternel c'est gentil de ta part

  8. #8
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Citation Envoyé par DLOYAS Voir le message
    [on peut modifier y (* pt3 = 111) ] ou quoi ?
    C'est quand même logique

    Tu as une constante et tu transfères les responsabilités à une variable non constante: tu casses en quelque sorte le contrat
    C'est comme une méthode (d'une classe) constante qui ne peut appeler que des méthodes constantes: il faut que tout le monde assure de respecter l'état constant.



    C'est pour cela qu'il y a le mot clef const_cast qui remplace en partie le cast C

  9. #9
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 735
    Par défaut
    Citation Envoyé par foetus Voir le message
    Télécharger Visual C++ 2010 pour Windows
    Pourquoi Visual Studio spécifiquement ?

  10. #10
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Citation Envoyé par Daïmanu Voir le message
    Pourquoi Visual Studio spécifiquement ?
    Oui tu as raison

    Donc sous Windows Visual (ou g++ via cygwin) sous Linux g++ sous MAC XCode/ clang (ou à défaut g++)
    Et n'oublie pas la bascule "-Wall" pour afficher tous les messages d'alerte (Warnings all) comme l'a dit leternel: c'est de la documentation gratuite

Discussions similaires

  1. Pointeur constant sur objet constant
    Par escafr dans le forum C++
    Réponses: 4
    Dernier message: 30/06/2008, 17h23
  2. Modifier une chaîne d'un pointeur constant
    Par oranoutan dans le forum C
    Réponses: 7
    Dernier message: 25/05/2007, 16h32
  3. Réponses: 9
    Dernier message: 14/01/2007, 16h40
  4. pointeurs constants et prototype de ma fonction
    Par salseropom dans le forum C
    Réponses: 3
    Dernier message: 23/05/2006, 18h03
  5. Pointeur sur constante non constante
    Par Pragmateek dans le forum C
    Réponses: 3
    Dernier message: 21/03/2006, 14h22

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