变量的作用域和生存期--C++

很多使用变量犯的错误,都与标题谈到的两个问题有关。

 

一般来说,局部变量只在block内有效,全局变量在整个文件内都有效,不过出错往往都出在特殊的情况下。

 

今天看到一个知识点,在函数内定义的被static修饰的变量,如果函数执行的时候该变量的值被修改了,那么下次调用该函数的时候,该变量的值会保持为上次被修改后的值。也就是说,如果在函数中定义了static变量的时候,调用函数的时候,要注意这个变量的值的变化,否则可能产生逻辑错误。

 

要把这个问题弄清楚,可以从static变量的生存期和存储区入手,定义为static的变量,存储在静态存储区域,而每次调用函数的时候,给函数执行分配的区域是动态区域,函数执行完之后,这些存储空间会被释放掉。static变量不存储在动态存储区内,所以函数每次执行完之后,静态变量不会被释放,而会保持函数执行过后的值不变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值