Pointeur en C
Résolu/Fermé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
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
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
16 déc. 2009 à 16:42
Négatif
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...
Utilisateur anonyme
16 déc. 2009 à 17:47
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 !
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
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
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.
Cordialement.
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
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:
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
16 déc. 2009 à 17:02
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...