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
A voir également:
- Pointeur en C
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Le pointeur de mon pc portable ne marche plus - Guide
- Pointeur laser publicitaire ✓ - Forum Loisirs / Divertissements
- Pointeur souris avec rond de chargement qui clignote sans arrêts ✓ - Forum Windows
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...
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 !
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.
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:
On peut déclarer et initialiser un pointeur de deux façons:
ou
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
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
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...