C++静态全局变量和全局变量的区别
2024-08-30 15:51:41
静态全局变量 | 非静态全局变量 | |
存储方式 | 静态存储 | 静态存储 |
作用域 | 定义该变量的源文件内 | 所有源文件 |
解释:
共同点:全局变量(外部变量)的说明之前再冠以static 就构 成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。
不同点:这两者的区别虽在于非静态全局 变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在 定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此 可以避免在其它源文件中引起错误。从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量 后是改变了它的作用域, 限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。
最新文章
- 【Java】子类的链式调用
- HTML基础篇之HTML基本结构
- c# 遍历子控件,比如Form下的group,或者panel
- Highcharts AJAX JSON JQuery 实现动态数据交互显示图表 柱形图
- HDU 1162 Eddy's picture
- Chrome不支持本地Ajax请求解决?
- 手势(Gesture)的增加和识别
- JAVA入门[23]-SpringBoot配置Swagger2
- C++ URLencode library
- WebApi接口返回值不困惑:返回值类型详解
- SharpDevelope 在 Windows 7 SP1 with .net framework4.0 下编译时找不到resgen.exe 解决办法
- Ionic 安装JPush过程
- 牛客第二场Dmoney
- BBS-基于用户认证组建和Ajax实现登陆验证
- BASIC-25_蓝桥杯_回形取数
- 5.docker学习之容器
- eclipse 编译JAVA 项目导入的WEB项目 无法编译问题
- linux oracle sqlplus中文乱码解决
- EarlyZ disable( earlyz失效
- linux安装mongodb,设为全局和后台启动
热门文章
- Struts2验证框架的配置及validation.xml常用的验证规则
- Table View Programming Guide for iOS---(二)----Table View Styles and Accessory Views
- 014--python运算符和作业改进
- js实现属性只读
- 北京师范大学第十四届ACM决赛-重现赛 F:Training Plan(DP)
- hdu5443 【线段树】
- 跟我一起玩Win32开发(6):创建右键菜单
- Python %s和%r的区别
- 洛谷 P1072 Hankson 的趣味题 || 打质数表的分解质因数
- Keepalived+Nginx实现Nginx的高可用