【C++】static与extern关键字

一、static关键字

   通常,在函数体内定义了一个变量,每当程序运行到该语句时都会给该局部变量分配栈内存,但随着程序退出函数体,系统就会收回栈内存,局部变量也相应失效。但是有时候我们需要在两次调用之间对变量的值进行保存。通常的想法是定义一个全局变量来实现,但变量不属于函数本身,不只受函数的控制,给程序的维护带来不便。使用静态局部变量正好可以解决这个问题。

(1)静态局部变量
   静态局部变量在全局区存储,静态局部变量只被初始化一次,下次使用依据上一次保存的值。生存周期为整个源程序,作用域与普通局部变量相同,该变量只能在定义该变量的函数内使用。对于基本类型的静态局部变量,若在定义时未赋以初值,则系统自动赋予0值。对于普通局部变量,若在定义时未赋以初值,则其值是未定义。把局部变量改变为静态局部变量后是改变了它的存储方式,改变了它的生存周期。

(2)静态全局变量
   静态全局变量在全局区存储,静态全局变量只被初始化一次。非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而static关键字限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。 把全局变量改变为静态全局变量是改变了它的作用域,限制了它的使用范围。

(3)静态函数
   静态函数和外部函数的作用域不同,static关键字限制了其作用域仅局限于本文件,在同一源程序的其它源文件中不能使用它。使用内部函数的好处是,不同的人编写不同的源文件时,不用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值