目录
3、全(外)局变量,分布在静态存储区(静态局部变量也分布在此)
1、《选择法对数组中的6个整数按由小到大排序,过程由函数实现》
一、变量的作用域:存在空间性
1、指变量在程序中的有效范围
2、局(内)部变量,分布在动态存储区
- 在函数内(符合语句内)定义的变量,它只在本函数内(复合语句内)有效
- 生存期是该语句块,进入语句块时获得内存,仅能由语句块内语句访问,退出语句块时释放内存,不再有效;随用随分配,用完就释放;
- 定义时不会自动初始化,除非程序员制定初值;
- 并列语句块各自定义的同名变量互补干扰,不同函数可以有相同的变量名;
- 形参和实参可以同名;
- 形参也是局部变量;
- 主函数里的变量也是局部变量;
- 复合语句里定义的变量也是局部变量;复合语句的局部变量和本函数的局部变量同名时,本函数的局部变量不起作用;内部的优先
3、全(外)局变量,分布在静态存储区(静态局部变量也分布在此)
- 在所有函数之外定义的变量;
- 生存期是整个程序,从程序运行起占内存,程序退出时释放内存;
- 有效范围是从定义变量的位置开始到本程序结束;
- 全局变量必须在所有函数之外定义,且只能定义一次;
- 如果在其作用域内的函数定义了同名局部变量,则在局部变量的作用域内,同名全局变量暂时不起作用;内部的优先
- 可以通过声明一个extern的全局变量扩展全局变量的作用域,也可以通过定义一个static的全局变量限制这种扩展;
- 全局变量增加函数间数据联系,函数只能返回一个值,可用影响全局变量的方式带回给主调函数多个值;
- 全局变量会降低程序的清晰性,因为所有函数都能影响变量的值;
- 全局变量的初值为0。
4、不同的变量所分配的程序区
程序区 | 静态存储区 | 动态存储区 |
变量作用域 | 全(外)局变量,静态局部变量 | 局部变量,寄存器变量 |
分配 | 编译时分配内存 | 随用随分配 |
释放 | 用完不释放,程序结束时释放 |