Bonjour, je suis en train de préparer un petit exercice sur les pointeurs, et en faisant des tests sous visual c++, je viens de me rendre compte que je ne comprends pas comment le compilateur répartit les variables dans la mémoire de l'ordinateur.
En effet, voici une partie de mon programme :
Le résultat me surprend :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 float a=0.001; float b=0.003; float c, *pa, *pb; cout << "Adresses : " << endl; cout << "&a = " << &a << endl; cout << "&b = " << &b << endl; cout << "&c = " << &c << endl; cout << "&pa = " << &pa << endl; cout << "&pb = " << &pb << endl;
&a = 0012FF64
&b = 0012FF68
&c = 0012FF6C
&pa = 0012FF5C
&pb = 0012FF60
D'une part, je ne comprend pas pourquoi dans la mémoire pa et pb sont placés avant a, b et c, alors qu'ils ont été déclarés après si on suit les instructions du programme.
Par ailleurs, j'ai essayé d'échanger les déclarations de a et b, en mettant float b avant float a, et à ma grande surprise l'affichage est le même : l'adresse de b est celle de a + 4 octets...
L'adresse des variables est-il determiné en fonction de leurs noms ? Au sujet de l'échange a - b, suis victime d'une sorte de cache de Visual Studio (qui ne reconsidère pas la déclaration des variables d'une compilation à une autre... ?)
Enfin, est-ce le même fonctionnement en C ?
Merci de bien vouloir m'éclairer mes chers amis.![]()
Partager