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 :

Incomprehensible :/ (Pointeur non portable)


Sujet :

C

  1. #61
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Si tu veux utiliser ton pointeur, il faut l'associe a un bloc memoire alloue par malloc().
    Le malloc n'est pas forcément obligé, non?
    Tout dépend si l'on désire pointer sur un élément du tableau (pour effectuer ou non des changements) ou reserver un espace mémoire pour effectuer par exemple une copie de la chaine de caractère.

  2. #62
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par skip78
    Le fait est que le const char * est géré par la fonction d'appel de chemin et par conséquent que cette dernière s'occupe de lui allouer une petite place memoire
    Si la fonction modifie le contenu du pointeur, alors il faut lui envoyer l'adresse de celui-ci (i.e. elle recoit un char **). Et puis qualifier de const une variable potentiellement modifiee par la fonction, c'est bizarre...

  3. #63
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par homeostasie
    Le malloc n'est pas forcément obligé, non?
    Non, en effet. Ce pourrait etre l'adresse de n'importe quel objet valide de type char (tableau statique, retour de malloc(), variable scalaire, ...).

  4. #64
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par DaZumba
    Et puis qualifier de const une variable potentiellement modifiee par la fonction, c'est bizarre...
    Non non, un const char * (aka char const *) peut être modifié.
    C'est un char * const (ou bien un char const * const) qui ne peut pas être changé...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #65
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Et puis qualifier de const une variable potentiellement modifiee par la fonction, c'est bizarre...
    Bien une variable définie en "const" ne pourra être modifiée et en principe, si on tente de lui attribuer une valeur, le compilateur va faire des siennes (erreur ou warning).

  6. #66
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par Médinoc
    Non non, un const char * (aka char const *) peut être modifié.
    C'est un char * const (ou bien un char const * const) qui ne peut pas être changé...
    Oui, mais je prefere personnellement ne pas qualifier de const une variable qui va etre modifiee par la fonction. Au moins, les intentions du programmeur sont claires. Apres, si le programmeur s'amuse a jouer sur les nuances 'le caractere pointe ne peut pas etre modifie', 'le pointeur ne peut pas etre modifie' et 'le caractere pointe et le pointeur ne peuvent pas etre modifies', il faut qu'il le justifie, car cela demande un effort de la part du lecteur.

  7. #67
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Bon il semblerait que j'ai finalement resolu ce problème en copiant les deux const char* dans des char* ; caractère par caractère, sans oublier le '\0' à la fin.

    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

Discussions similaires

  1. [debutant] Pointeur non-initialisé ?
    Par Pit29 dans le forum C
    Réponses: 8
    Dernier message: 04/01/2007, 16h55
  2. .exe non portable?
    Par poukill dans le forum C++
    Réponses: 41
    Dernier message: 16/06/2006, 11h09
  3. Framework .NET 2.0: application non portable
    Par alceste dans le forum C++
    Réponses: 10
    Dernier message: 16/06/2006, 08h20
  4. comparaison de pointeur non portable
    Par kykyn dans le forum C++
    Réponses: 2
    Dernier message: 16/02/2006, 10h58
  5. Probléme de code non portable
    Par Stany dans le forum Windows
    Réponses: 2
    Dernier message: 23/08/2005, 11h02

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