char szBuff[10] = { 0 };
scanf("%9s", szBuff);//最多读9个字符,防止溢出
全局变量尽可能不用
code |
read execute |
全局、静态 |
|
data |
init |
read write |
|
read only |
常量 |
||
uninit |
read write |
全局、静态 |
|
stack |
read write |
||
heap |
read write |
编译器分配变量的原则:
按同内存属性分配
定义如下几个全局变量,注释里是对应的地址。可以开到已初始化和未初始化的地址有一定差距。
int a; //0042AE64
int b; //0042AE68
int c=0; //0042AE78
int d=1; //00427CB8
char name1[4]; //0042AE6C
char name2[4]={0}; //0042AE7C
char name3[4]={1}; //00427CBC
作用域实际是编译器按C语言标准所规定的语法做出了限制
变量作用域 |
例子 |
变量的生命期 |
块作用域 |
函数开始到函数结束 |
|
函数作用域 |
参数和局部变量 |
函数开始到函数结束 |
文件作用域 |
||
进程作用域 |
全局变量 |
所处模块装载到所处模块卸载 |