【c++面试问答】全局变量和局部变量的区别
问题
C++中的全局变量和局部变量有什么区别?
注:内容全部参考自文末的参考资料
全局变量和局部变量的区别
可以从以下4个角度来区分:
区别 | 全局变量 | 局部变量 |
---|---|---|
作用域 | 全局作用域 | 局部作用域 |
内存分配 | 全局变量在静态数据区 | 静态局部变量在静态数据区,非静态局部变量在栈区 |
生命周期 | 存在于整个程序运行期间 | 静态局部变量存在于整个程序运行期间,非静态局部变量存在于局部函数内部或局部循环体内部 |
对外链接 | ①全局变量可以在当前文件的任何地方使用 ②非静态全局变量可以在其他文件上使用,静态全局变量不能在其他文件上使用 | 局部变量不能在其他文件上使用,只可以在局部的函数中使用 |
全局变量与局部变量区别汇总
这部分内容在C++问题 32_C++内存管理是怎样的 中也有过总结,这里再汇总一下。
区别 | 静态全局变量 | 非静态全局变量 | 静态局部变量 | 非静态局部变量 |
---|---|---|---|---|
作用域 | 全局 | 全局 | 全局 | 局部 |
内存分配 | 静态数据区 | 静态数据区 | 静态数据区 | 栈区 |
生命周期 | 整个程序 | 整个程序 | 整个程序 | 局部函数体 |
对外链接 | 不允许 | 允许 | 不允许 | 不允许 |
补充:static对变量的影响
● 使得静态局部变量内存分配在静态数据区,导致延长了生命周期
● 使得静态全局变量无法被其他文件使用,局限了其文件对外链接
参考资料
[C++] 全局变量与局部变量的区别 https://blog.csdn.net/weixin_44922845/article/details/104580514