变量存储类型

  变量的存存储类型是指存储变量值的内存类型,其决定变量何时创建、何时销毁。变量的存储空间分为:普通内存、运行时堆栈和硬件寄存器。

  申明在所有代码块外的缺省存储类型变量的存储类型是静态的(static),此类变量称作静态变量。静态变量总是存储在静态内存中,也就是不属于堆栈的内存中。静态变量的存储类型是不可以被更改的。静态变量在程序运行前被创建,在整个程序运行期间始终存在。

  申明在代码块内的缺省存储类型变量的存储类型是自动的(auto),此类变量称作自动变量,其存储于程序的堆栈之中。关键字可指定变量的存储类型为自动的,但是没有这个必要,因为代码块内部申明的变量在存储类型缺省的情况下,其存储类型就默认是自动的。当程序执行到申明变量的语句时,自动变量被创建,当该段代码块执行完时,便销毁。即便该代码块被反复执行也是如此。

  还有一种存储类型是寄存器类型的。当关键字register用于代码块内变量申明时,该变量被称作寄存器变量(不加register便默认是自动变量),其存储类型是寄存器类型的。该类变量的创建和销毁时间跟自动变量相同。寄存器变量存储在硬件寄存器中,其访问效率比上述两种变量高,但是恢复该类型变量的时候,其值需从内存中复制,因此需要耗费一定的开销。可以将使用频率高的变量申明为寄存器变量,但是编译器可能会做一定的优化工作,不会完全按我们的意愿使用寄存器。

  需要补充的是,当关键字static用于代码块内变量申明时,该变量的存储类型被指定成静态的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值