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 :

Que signifie "const char* const "?


Sujet :

C

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Points : 97
    Points
    97
    Par défaut Que signifie "const char* const "?
    Bonjour à tous,
    Je regarde le cours de programmation avancée sous linux et je voudrais savoir si quelqu'un pourrais m'expliquer cette ligne de code tirée de la section 2-1-3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main (int argc, char* argv[])
    {
      int next_option;
      /* Chaîne listant les lettres valides pour les options courtes. */
      const char* const short_options = "ho:v";
    J'ai bêtement cru qu'il s'agissait d'un coquille et qu'il fallait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const char* short_options etc...
    -Au passage le code se compile avec cette modification- Mais puisque le programme fonctionne ausi de la première manière, je supose qu'il doit y avoir un subtilité.

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Krishna Voir le message
    Bonjour à tous,
    Je regarde le cours de programmation avancée sous linux et je voudrais savoir si quelqu'un pourrais m'expliquer cette ligne de code tirée de la section 2-1-3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main (int argc, char* argv[])
    {
      int next_option;
      /* Chaîne listant les lettres valides pour les options courtes. */
      const char* const short_options = "ho:v";
    Le premier const signifie que la valeur pointée est non modifiable (lecture seule). Le second signifie que le pointeur est non modifiable.
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Points : 97
    Points
    97
    Par défaut
    Merci!

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Je l'ai déjà dis mais comme ça pose toujours des problèmes je vais le redire, pour ces histoires de const il y a deux choses à savoir, et seulement deux choses :

    1) const T * est équivalent à T const *
    2) Ce qui est constant, c'est ce qui suit le "const"

    Donc d'après 1), ton expression peut aussi s'écrire "char const * const short_options". Et d'après 2) :

    - le premier const dit que *short_options est const
    - le deuxième const dit que short_options est const

    Voilà, tu n'as pas le droit de modifier short_options, et tu n'as pas le droit de modifier ce qui est pointé par short_options.

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

Discussions similaires

  1. const char / const charGL / char / string ?
    Par karistouf dans le forum OpenGL
    Réponses: 2
    Dernier message: 09/01/2015, 09h22
  2. Réponses: 3
    Dernier message: 20/01/2014, 00h04
  3. le type const char* const * et fltk en toile de fond
    Par dambriscard dans le forum C++
    Réponses: 4
    Dernier message: 04/07/2007, 16h18
  4. Réponses: 3
    Dernier message: 25/10/2006, 22h54

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