
Envoyé par
Golgotha
Bonjour,
Tu ne peux pas "décrémenter une adresse".
pour que tu voie bien :
Je créer un objet int, je l’appel A.
donc, A à une adresse en mémoire (physique), et une valeur.
Disons que l'adresse de A est 100, et que ça valeur est 0.
donc, &A = 100 et A = 0.
Si tu fait un pointeur sur A, donc, un pointeur comme son nom l'indique pointe sur la case mémoire de la variable, ce n'est pas la variable. Notre pointeur s’appelle PA.
ça valeur est de 100 (adresse de A), et sont adresse est de 300 (case mémoire physique)
on sais que (*PA) permet de modifier directement le contenu de la case mémoire pointé, donc A.
Mais, si je décrémente PA, que ce passe t'il ?
PA passe par exemple à 97.
concrètement : l'adresse physique de PA ne change pas, elle est de 300, et l'adresse de A ne change pas non plus ! elle reste évidement à 100, il est à noté que notre pointeur, pointe maintenant sur une autre case mémoire que A, mais nus n'avons pas du tout modifier l'adresse physique de la variable A, et heureusement !
Petite dessin :
Avant la décrémentation, PA pointe sur la case 100, qui est notre variable A
-----------> 097 - [??]
-----------> 098 - [??]
-----------> 099 - [??]
[PA]-------> 100 - [A]
-----------> 101 - [??]
-----------> 102 - [??]
-----------> 103 - [??]
Les cases à coté sont d'autre variable, on ne les connais pas.
Après notre décrémentation :
[PA]-------> 097 - [??]
-----------> 098 - [??]
-----------> 099 - [??]
-----------> 100 - [A]
-----------> 101 - [??]
-----------> 102 - [??]
-----------> 103 - [??]
PA pointe une autre case mémoire, mais la variable A à toujours la même adresse.
Partager