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 :

Différence de déclarations avec "const"


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 140
    Par défaut Différence de déclarations avec "const"
    Bonjour,

    je me souviens d'un sujet (que je ne retrouve plus) où il y avait une explication des différentes déclarations :
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const char * pt_word;
    char * const pt_word;
    const char * const pt_word;

    si quelqu'un peut donner plus d'informations sur ces déclarations (si elles existent toutes).
    Merci

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 140
    Par défaut
    Très bon sujet aussi pour l'info qu'il contient, mais ce n'est pas celui-ci.
    Je me souviens particulièrement d'une personne qui expliquait justement la portée du const suivant qu'il se trouvait à gauche ou à droite d'un mot.

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const char * pt_word; // pointeur non constant sur une donnée constante
    char * const pt_word; // pointeur constant sur une donnée non constante
    const char * const pt_word; // pointeur constant sur une donnée constante
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 469
    Par défaut
    Bonjour,

    Citation Envoyé par MicBeastKiller Voir le message
    Bonjour,

    je me souviens d'un sujet (que je ne retrouve plus) où il y avait une explication des différentes déclarations :
    Celui-ci, peut-être : http://www.developpez.net/forums/d12...r/#post6683664
    Mais il se trouve dans le forum C++.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 140
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Bonjour,
    Celui-ci, peut-être : http://www.developpez.net/forums/d12...r/#post6683664
    Mais il se trouve dans le forum C++.
    C'était sûrement celui-ci.
    Il y a en tout cas toutes les explications.
    Merci à tous.

  8. #8
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Faudra juste vérifier les corrections apportées dans l'avant-dernier message

    Dans n1256, il y a l'exemple donné au point 28 de la partie 6.2.5 Types qui est intéressant :
    EXAMPLE 1 The type designated as ‘‘float *’’ has type ‘‘pointer to float’’. Its type category is
    pointer, not a floating type. The const-qualified version of this type is designated as ‘‘float * const’’
    whereas the type designated as ‘‘const float *’’ is not a qualified type — its type is ‘‘pointer to constqualified
    float’’ and is a pointer to a qualified type.
    Il y en a un autre dans la partie 6.7.5.1 Pointer declarators, au point 3 :
    EXAMPLE The following pair of declarations demonstrates the difference between a ‘‘variable pointer
    to a constant value’’ and a ‘‘constant pointer to a variable value’’.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const int *ptr_to_constant;
    int *const constant_ptr;
    The contents of any object pointed to by ptr_to_constant shall not be modified through that pointer,
    but ptr_to_constant itself may be changed to point to another object. Similarly, the contents of the
    int pointed to by constant_ptr may be modified, but constant_ptr itself shall always point to the
    same location.
    suivi par le point 4 :
    The declaration of the constant pointer constant_ptr may be clarified by including a definition for the
    type ‘‘pointer to int’’.
    typedef int *int_ptr;
    const int_ptr constant_ptr;
    declares constant_ptr as an object that has type ‘‘const-qualified pointer to int’’.

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 140
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Faudra juste vérifier les corrections apportées dans l'avant-dernier message
    En fait, je vais faire référence à ce message :
    http://www.developpez.net/forums/d11...buter/const-c/

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 140
    Par défaut
    Par contre je ne peux faire de cette manière là :
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int maFonction( int unEntier const , char * unMot const )
    {
        /* code */
    }
    mettre le "const" à la fin ?

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