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 sur char


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    avocat
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : avocat
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Par défaut pointeur sur char
    Bonjour,
    Comme vous vous en rendez compte, je suis débutant en c++
    Je me pose la question suivante : pourquoi n'est-il pas possible d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char a = 'z';
    int *pointeur = &a;
    ?
    Merci pour vos réponses

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    a est un char, donc pour pouvoir pointer sur a il faut un pointeur sur char.
    Un pointeur sur un int, ça va permettre d'accéder quelque qui est un int.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    avocat
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : avocat
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Par défaut
    merci bien. Mais je pensais que le contenu d'un pointeur étant une adresse, donc un nombre, c'était toujours du int ou du long.

  4. #4
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 759
    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 759
    Par défaut
    Citation Envoyé par RVOLIA Voir le message
    Mais je pensais que le contenu d'un pointeur étant une adresse, donc un nombre, c'était toujours du int ou du long.
    C'est le cas 1 adresse est 1 nombre. Mais

    • On dit vers quoi on pointe : char*, my_struct*, FILE*
    • depuis la norme C99, et l'arrivée des processeurs 64 bits, il y a les types intptr_t et uintptr_t pour contenir 1 pointeur. Parce que si tu utilises l'opérateur sizeof sur 1 pointeur, il te retournera soit 4 octets (pour du 32 bits) soit 8 octets (pour du 64 bits). C'est lié qu'1 processeur de X bits peut allouer 2^X de mémoire (la fameuse limite de 4 Go des systèmes d'exploitation 32 bits )


    Ensuite, cela c'est juste le début :
    • parce 1 adresse c'est aussi le début de quelque chose - d'1 tableau, de ta structure
    • tu as justement l’arithmétique des pointeurs
    • les dangling pointeurs
    • 1 tableau passé en paramètre est dégradé en pointeur (et donc tu perds la taille)
    • ...
    • la généricité avec void*

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    avocat
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : avocat
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Par défaut
    ok, merci pour ces réponses mais alors comment j'obtiens l'adresse de char a avec un char *pointeur?

  6. #6
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 759
    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 759
    Par défaut
    Simplement avec 1 affectation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        char a = 'z';
     
        char* p_a = &a;
        char* p_b = p_a;
        char* p_c = NULL;
     
        printf("%c at adresse %p - %lu bits (p_a: %p, p_b: %p, p_c: %p)\n", a, &a, sizeof(p_a), p_a, p_b, p_c);

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    avocat
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : avocat
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Par défaut
    ok, merci pour vos réponses

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/12/2009, 11h40
  2. Allocation dynamique: Tableau de pointeur sur char
    Par Anonymouse dans le forum Débuter
    Réponses: 4
    Dernier message: 21/10/2007, 10h57
  3. Réponses: 6
    Dernier message: 02/11/2006, 16h44
  4. [Console] Pointeur sur char
    Par archipel_k dans le forum C
    Réponses: 4
    Dernier message: 04/08/2006, 14h32
  5. Sizeof d'un pointeur sur char ...
    Par Mike888 dans le forum C
    Réponses: 8
    Dernier message: 03/11/2005, 13h04

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