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

char szBuff[10] = { 0 };

scanf("%9s", szBuff);//最多读9个字符,防止溢出

 

 

全局变量尽可能不用

 

 

code

 

read execute

全局、静态

data

init

read write

read only

常量,const生命的全局变量,字符串常量

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

 

变量作用域

例子

变量的生命期

块作用域

 

函数开始到函数结束

函数作用域

参数和局部变量

函数开始到函数结束

文件作用域

静态全局变量

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

进程作用域

全局变量

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

 

c++中通过函数给全局变量赋初值,可以实现在main之前执行代码的功能。此全局变量被安排在未初始化区域。

 

posted @ 2020-04-15 07:54  八转达人  阅读(214)  评论(0)    收藏  举报