C++全局变量,static修饰的静态全局变量,局部变量,静态局部变量,静态函数和普通函数。

本文详细介绍了C++中static关键字在全局变量、静态全局变量、局部变量、静态局部变量以及静态函数上的应用和区别。static全局变量限制作用域为本文件,静态局部变量在函数调用中保持其值,而静态函数则只在当前源文件内可见。此外,static还有隐藏变量、保持变量持久和默认初始化为0的作用。
摘要由CSDN通过智能技术生成

1、全局变量:
存储区在静态存储区。作用域为整个源程序( 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的)。
2、静态全局变量:
存储区也在静态存储区。static限制作用域,作用域为本文件内有效(定义该变量的源文件内), 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
static全局变量只初使化一次,防止在其他文件单元中被引用。
3、局部变量:
存储区是栈区,离开函数体就释放内存。局部变量也可以在堆上进行动态的分配,但须记得释放空间。
4、静态局部变量:
存储区变为静态存储区。当一个函数里面有一个static修饰的局部变量的时候,如果反复调用多次,那么下一次函数用的该变量的值不会再被初始化一次了(不执行static修饰的变量初始化语句),而是采用上一次函数执行完之后此变量的值。静态的局部变量如果没有被初始化,会自动被编译器赋值为0。
静态局部变量只对定义它的函数体始终可见,函数体执行完过后虽然还存在,但是无法被其他的使用了。 在该函数的调用过程中,这个变量作为全局变量可以被使用。且不随着函数结束释放掉,整个程序结束的时候才被释放掉,但是不被其他的函数所引用。跟真正的全局变量还是有区别的。真正的全局变量是所有的函数都可以访问到。
正是由于static局部变量的这种特性,使得静态局部变量的函数变得不可重入,即每次调用可能会产生不同的结果,这在多线程编程时可能会成为一种隐患。

5、总结:static三个重要作用:
1)隐藏。当我们同时编译多

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值