11. 变量生命周期和作用域

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语言标准所规定的语法做出了限制

变量作用域

例子

变量的生命期

块作用域

函数开始到函数结束

函数作用域

参数和局部变量

函数开始到函数结束

文件作用域

进程作用域

全局变量

所处模块装载到所处模块卸载

猜你喜欢

转载自www.cnblogs.com/Nutshelln/p/12702850.html