register,static,extern,const,typedef,volatile关键字

一.register

用register修饰的作用:

请求编译器尽可能(CPU寄存器资源有限)将变量的值保存在CPU内部寄存器中,省去了CPU从内存中抓取数据的时间,提高了程序的运行效率。

何时用register修饰变量?

将频繁使用的变量声明为register变量。

注意事项:①register只能修饰局部变量,不能修饰全局变量和函数(全局变量可被多个程序访问,只有当前程序知道register在哪)。


    ②不能用&获取register修饰的变量的地址(&获取的是保存在内存中的变量的地址,而register修饰的变量保存在寄存器中)。


    ③register修饰的变量类型需要是CPU接受的数据类型。

二.static:可修饰变量(包括局部变量和全局变量),也可修饰函数。

用static修饰的作用:

①修饰局部变量:延长局部变量生命周期到程序结束。

②修饰全局变量:静态全局变量只能在本文件被访问,不能在其他文件被访问。

③修饰函数:静态函数只能在本文件被调用。


④static修饰的变量保存在数据区的静态数据区,如果变量没有初始化,系统默认将其初始化为0。

三.extern:

用extern修饰的作用:声明某个已经在其他文件被定义的全局变量。

注:声明变量要加类型。


四.const:

用const修饰的作用:将修饰的变量标明为只读变量。

const修饰的变量对应的空间可变,但不能通过修饰的变量名来修改对应空间的值。


何时用const修饰变量?

一般用const修饰函数形参,防止在函数的实现过程中修改实参对应的值。


注:const修饰一个变量时,要对变量进行初始化(后面不能再通过const修饰的变量名修改其对应空间的值)。


五.typedef:为数据类型重命名。

为数据类型重命名的作用:

①提高代码的移植性。

②方便定义变量(把复杂的变量名简化),提高编程效率。

③起到解释变量的作用。


六.volatile:

用volatile修饰的作用:优化器在用到volatile修饰的变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。


(1). 一个参数既可以是const还可以是volatile吗?解释为什么。 
答:是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。 
(2). 一个指针可以是volatile 吗?解释为什么。 
答:是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值