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 :

pointeur et chaine de caractere


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Par défaut pointeur et chaine de caractere
    Bonjour,

    j'ai un petit probleme pour comprendre un bout de code :
    Un pointeur normalement ça doit contenir une adresse.
    or le code ci dessous fonctionne parfaitement(j'ai bien "texte qui s'affiche"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *pointeur="texte";
    printf("%s",pointeur)
    Mais ici le pointeur ne contient pas d'adresse...

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Mais ici le pointeur ne contient pas d'adresse...
    Si, la chaine "texte" est contenue en mémoire, et le pointeur pointeur pointe dessus.

  3. #3
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    pointeur contient l'adresse du premier élément d'un tableau de char
    situé en mémoire, tableau initialisé dés le chargement du prog.

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Par défaut
    En fait, en indiquant %s à printf(), il va lire à partir de l'adresse donnée en paramètre, les caractères jusqu'au prochain '\0'. (qui est l'indicateur de fin d'un tableau)
    Et en faisant: Tu alloues en fait de la mémoire pour strlen(foo) + 1 caractères, le + 1 étant pour le '\0' de fin.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Sachant que cette "allocation" est faite en mémoire "statique", il ne s'agit pas d'une "allocation dynamique" au sens C du terme.
    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.

Discussions similaires

  1. Pointeurs et Chaine de caractere ?
    Par mathinfo1 dans le forum C
    Réponses: 1
    Dernier message: 18/02/2010, 04h42
  2. Réponses: 7
    Dernier message: 06/11/2007, 09h15
  3. pointeurs et chaines de caracteres
    Par lylia SI dans le forum Débuter
    Réponses: 2
    Dernier message: 19/08/2007, 19h00
  4. Réponses: 2
    Dernier message: 12/10/2006, 20h28
  5. Réponses: 3
    Dernier message: 19/12/2004, 14h30

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