Pointeur en C

Résolu
Bonjour,
si je déclare un pointeur comme ceci int *pA, alors :

printf *pA affiche l'adresse de l'entier sur lequel pointe pA
printf &pA affiche l'adresse du pointeur pA
printf pA affiche quelle valeur svp, celle de l'entier sur lequel pointe pA,?

merci
Configuration: Linux
Mozilla 1.9.0.15

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. int a = 10;
    int *pA = &a;
    printf("adresse de a : %d , valeur de a : %d , adresse du pointeur sur a : %d", pA, *pA, &pA);


    Et ça ?

    Cordialement Zestyr
    1. et bien non ça me perturbe car je ne veux absolument pas d'exemple avec int *pA = &variable.

      Je lis dans mon livre que int *pA contient une adresse et tu écris que *pA contient une valeur, je ne comprends plus, je souhaite raisonner sur mon premier exemple s'il te plait...
  2. Bonjour

    Je lis dans mon livre que int *pA contient une adresse Ça m'étonnerait que ton livre dise ça tel que tu l'écris. C'est peut-être ce que tu as cru comprendre, mais je doute que ce soit écrit.
    int * pA ne contient rien du tout. C'est une déclaration. La variable, c'est pA. pA contient une adresse à condition d'avoir été initialisé, sinon pA contient n'importe quoi, comme toute autre variable. Et *pA contient une valeur, à condition que pA contienne une adresse valide.
    Si tu ne veux absolument pas de int *pA = &a; il FAUT quand même que tu mettes d'une manière ou d'une autre une adresse correcte dans pA. pA=&b par exemple (hihi!) ou un malloc...
    1. Bonjour,

      Pour se servir d'un pointeur, il faut entrer l'adresse d'une autre variable, avec &.
      & sert donc à obtenir l'adresse d'un variable, mais d'un pointeur aussi.

      donc

      *pa = valeur de la variable sur laquelle pointe pa.
      pa = adresse de la variable sur laquelle pointe pa
      &pa = adresse du pointeur lui même !
      1. autre petite remarque, pour l'affichage avec printf d'une adresse, il faudrait plutôt utiliser "%p" que "%d".
        Cordialement.
        1. Ca dépend le format d'afichage désiré ! de toute façon ça 'a aucune importance, ce qui compte est que pA contiennent l'adresse de a après quelle fasse 1 ou 10 010 ou 271a on s'en fou !

          Aussi je voulais insister sur le fait qu'un pointeur n'est en fait qu'une variable presque comme les autres.

          edit:
          A oui aussi:

          Et bien non ça me perturbe car je ne veux absolument pas d'exemple avec int *pA = &variable. 

          On peut déclarer et initialiser un pointeur de deux façons:

          int *pA = &a; 


          ou

          int *pA = NULL; 
          pA = &a;


          C'est vrai que la première méthode peut prêter à confusion, la deuxième montre bien ce qu'est un pointeur:
          D'abord on déclare le pointeur sur a comme n'importe qu'elle variable (à une * près) (la déclarer a NULL n'est pas obligatoire mais conseiller)
          Puis on lui affecte l'adresse de a comme valeur.
          C'est donc juste une variable qui stock une adresse. Ce qui change est la manière de l'utiliser!

          Cordialement
          1. merci pour votre aide