先定义的变量地址比后定义的变量地址高?该怎么处理
先定义的变量地址比后定义的变量地址高?
为什么a的地址要比b的高?a先声明,应该a的地址比b的低才是呀?
------解决方案--------------------
没有为什么
所谓怎么安排都有可能
除了包括 ACB CAB BAC之外
自然包括 CBA ABC 这样的情况
这才叫做 "都有可能"
------解决方案--------------------
VC6 Release模式下,a的地址要比b的低
0012FF38
0012FF3C
0012FF40
0012FF44
0012FF48
0012FF4C
VC6 Debug模式下,a的地址要比b的高
0012FF7C
0012FF78
0012FF74
0012FF70
0012FF6C
0012FF68
其实不要纠结变量的地址顺序,除非你想hack
从编译器的角度来说,变量的地址是可以随机安排的,又不影响寻址使用,不一定非要按排列顺序
#include<stdio.h>
int main()
{
int a, b, c;
int d, e, f;
printf("%p\n", &a);
printf("%p\n", &b);
printf("%p\n", &c);
printf("%p\n", &d);
printf("%p\n", &e);
printf("%p\n", &f);
return 0;
}
为什么a的地址要比b的高?a先声明,应该a的地址比b的低才是呀?
------解决方案--------------------
没有为什么
所谓怎么安排都有可能
除了包括 ACB CAB BAC之外
自然包括 CBA ABC 这样的情况
这才叫做 "都有可能"
------解决方案--------------------
#include<stdio.h>
int main()
{
int a, b, c;
int d, e, f;
printf("%p\n", &a);
printf("%p\n", &b);
printf("%p\n", &c);
printf("%p\n", &d);
printf("%p\n", &e);
printf("%p\n", &f);
return 0;
}
为什么a的地址要比b的高?a先声明,应该a的地址比b的低才是呀?
VC6 Release模式下,a的地址要比b的低
0012FF38
0012FF3C
0012FF40
0012FF44
0012FF48
0012FF4C
VC6 Debug模式下,a的地址要比b的高
0012FF7C
0012FF78
0012FF74
0012FF70
0012FF6C
0012FF68
其实不要纠结变量的地址顺序,除非你想hack
从编译器的角度来说,变量的地址是可以随机安排的,又不影响寻址使用,不一定非要按排列顺序