c++学习笔记(十九)全局变量、局部变量、静态全局变量、静态局部变量的区别

C++中的变量根据作用域分为全局、局部、静态全局和静态局部变量。全局变量作用于所有源文件,静态全局变量只限定义文件。局部变量仅在函数执行时存在,静态局部变量在函数调用间持久存在。静态变量存储在静态数据区,全局和静态局部变量在静态存储区分配,局部变量在栈中分配。静态修饰符用于限制作用域而非改变存储位置。注意静态变量在多线程环境中的重入问题。静态函数仅在其定义的文件中可见。
摘要由CSDN通过智能技术生成

        C++ 变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6 种:全局作用域局部作用域语句作用域类作用域命名空间作用域和文件作用域

从作用域看:

        全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。

        静态全局变量也具有全局作用域,使用static关键字修饰,它与全局变量的区别在于如果程序包含多个文件的话,它仅作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。

        局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。

        静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。

从分配内存空间看:

        全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值