全局变量与局部变量的区别
答:1. 作用域上,全局变量是全局作用域,局部变量是局部作用域(空间区别)
2.内存分配上,全局变量在静态数据区,静态局部变量在静态数据区,非静态局部变量在栈(空间区别)
3.生命周期上,全局变量存在于整个程序运行期间,静态局部变量存在于整个程序运行期间,非静态局部变量存在于局部函数内部或局部循环体内部(时间区别)
4.对外链接上,非静态全局变量其他文件也可以使用,静态全局变量和局部变量其他文件不可以使用(外链区别)
全局变量与局部变量区别汇总
内存分配位置影响生命周期
静态全局变量 | 非静态全局变量 | 静态局部变量 | 非静态局部变量 | |
---|---|---|---|---|
作用域 | 全局 | 全局 | 局部 | 局部 |
内存分配 | 静态数据区 | 静态数据区 | 静态数据区 | 栈区 |
生命周期 | 整个程序 | 整个程序 | 整个程序 | 局部函数体 |
对外链接 | 不允许 | 允许 | 不允许 | 不允许 |
static对变量的影响
答:1. 使得静态局部变量内存分配在静态数据区,导致延长了生命周期
2.使得静态全局变量无法被其他文件使用,局限了其文件链接