函数,变量及存储方案

         我们知道变量分为两种类型,一种是自动变量另一种是静态变量,自动变量存储在相应在栈中,创建和销毁与程序的控制权和作用域相关,控制权进入相应作用域则编译器创建并维护变量在相应的栈(一种先进后出的结构)中,出了作用域则自动销毁。也就是说其生命周期由程序的执行状态控制。而静态变量,即是存储在编译器分配的固定的内存中(不在栈中),其生命周期在整个程序运行中一直存在。而这样的内存我们也称为静态内存块。

         那么函数的存储类型又是怎么样的呢?其实函数与变量很相似,函数存储的地址与静态变量在同一个地方(静态内存块中)。即函数在整个程序运行期间都存在。生命周期为整个程序。函数与变量一样也具有外部全局函数与内部全局函数。外部全局函数就是函数在一个文件中定义,其它文件中可以直接访问(类似与外部全局变量,此时的extern关键字在相应的函数引用中可以省略,此处不像外部全局变量一样,外部全局变量一定要用关键字extern来声明相应的引用,才能在其它源文件(.cpp)中使用)。那可能有人要问了,如果想要在单个文件中访问,其它文件中不能访问,那该怎么办呢,有办法吗?其实很简单,只需要在相应的函数原型及定义中加上static关键字就可以了。与变量一样。加上static后,这个函数只能在当前文件中使用。但如果这个文件外其它文件具有相同的外部全局函数定义时,则会隐藏外部函数,而直接应用内部static函数(与变量的应用一样,两者采用同样的机制)。

          C++中总结起来,一共存在着有三种类型的存储方案,1.静态存储    2.自动存储   3.动态存储(即new出来的内存,存放在堆中,生命周期由程序员来分配与释放)。

         
转自个人技术网站

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值