Pointeur en C
Résolu
serge
-
serge -
serge -
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
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
-
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
-
-
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... -
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 ! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
autre petite remarque, pour l'affichage avec printf d'une adresse, il faudrait plutôt utiliser "%p" que "%d".
Cordialement. -
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