Pointeur en C

Résolu/Fermé
serge - 16 déc. 2009 à 16:22
 serge - 16 déc. 2009 à 20:48
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

6 réponses

Zestyr Messages postés 466 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 17 octobre 2011 52
16 déc. 2009 à 16:51
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...
0
Zestyr Messages postés 466 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 17 octobre 2011 52
16 déc. 2009 à 16:42
Négatif
0
ça ne répond pas à ma question...
0
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...
0
Utilisateur anonyme
16 déc. 2009 à 17:47
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
16 déc. 2009 à 18:06
autre petite remarque, pour l'affichage avec printf d'une adresse, il faudrait plutôt utiliser "%p" que "%d".
Cordialement.
0
Zestyr Messages postés 466 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 17 octobre 2011 52
16 déc. 2009 à 18:53
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
0
merci pour votre aide
0