变量在内存中的位置
全局变量与局部变量
作用域
全局变量
1、作用于所在的模块。
2、在PE结构中,全局变量位于.data节
3、通过立即数寻址。
局部变量
1、与所在函数的作用域一样。
2、所在地址为栈上。
3、通过EBP或ESP进行寻址。
#include "pch.h" #include <iostream> #define CONST 888 int gInt = 666; int main() { /* 这就是C++中的常量折叠:指const变量(即常量)值放在编译器的符号表中,计算时编译器直接从表中取值, 省去了访问内存的时间,从而达到了优化。 而在此基础上加上volatile修改符,即告诉编译器该变量属于易变的,不要对此句进行优化, 每次计算时要去内存中取数。 这里也有个小细节:每种编译器对volatile修饰符的修饰作用效果不一致,有的就直接“不理会” */ const volatile int a = 12345; int *p = (int *)&a; *p = 456; const char *cp = "linux"; //*cp = "L"; 报错 printf("a = %d\n",a); int lint = 555; printf("lint = %d ,gInt = %d\n", lint, gInt); std::cout << "Hello World!\n"; system("pause"); }