C语言变量的存储方式 ——auto,register,static关键字

C语言变量的存储方式

——auto,register,static关键字

1.      auto

编译器在默认缺省的情况下,所有的关键字都是auto的。没什么好说的。

2.      register

register关键字要求编译器尽可能的把变量存储在CPU的寄存器中,而不是放在寻址访问的内存中。但是由于CPU的寄存器个数有限等原因,它只是要求编译器尽可能地吧变量啊放在寄存器中,而不是绝对。

CPU在运行时,是不直接和内存打交道的,当它需要内存中的数据是,寄存器先通过寻址的方式从内存中取得数据放在寄存器中(此处不考虑高速缓存区),然后在从寄存器读取数据。因此,如果把数据直接放在寄存器中,就省去了寄存器从内存中取数据这一步,可以大大提高程序的执行速度。

注意,在使用register修饰符时,是会受到一些限制的,register修饰的变量必须能够被CPU寄存器接受的类型。这意味着,register存储的变量必须是单一的值,且其长度不能超过一个整形的长度。

由于register存储的变量可能不存放在内存中,因此不能通过&操作符取得它的地址。

3.      static

3.1.          修饰变量

static可以修饰一个变量,表示该变量是一个静态的静态的变量。

这里的变量既可以是全局变量,也可以是局部变量。静态全局变量和静态局部变量都是存储在内存的静态区。

静态全局变量将变量的使用范围限制在其定义的文件中,其它文件即使使用extern也无法使用它。

静态局部变量,在函数体中定义的,就只有该函数体可以使用,同一文档的其他函数也用不了。由于静态局部变量的值是存放在内存的静态区,而不是在栈中,因此,该变量不会因为函数的销毁而销毁,下次执行该函数时,仍然可以被使用。

3.2.          修饰函数

静态函数:函数前加上static关键字就变成了静态函数。

静态函数仅在本文件中可用。

3.3.          修饰类成员

在类的成员变量前加上static关键字表明由该类实例化的所有对象共用同一个成员。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值