static、const及volatile

static:
1)如果static修饰一个函数体内的变量则在调用过程中其值不会被改变
2)如果static修饰一个变量(在模块中但不在函数体内)或函数,则这个变量或函数只在该模块中能被调用,不能被其他模块的函数调用

const:
简单来说const关键字的作用是“只读”
1)被const修饰的变量的值不可改变
const int a;
int const a;
都表示a的值不能被改变
2)const修饰指针有三种情况
a、const int *a;
此时a这个指针指向的地址中的值不能被改变,
此处注意:const int *a与int const *a是等价的
b、int * const a;
此时指针a的指针名不能被改变但内容可以被改变
c、const int const *a;
此时指针以及指针所指向的内容都不会被改变

volatile:
使用volatile修饰的变量意味着这个变量可能会被意想不到的改变,也就是说此时被备份放在寄存器中的值不一定是准确的,所以每当优化器用到这个值时都会小心的重新读取。因此被volatile修饰的变量是不会被编译器优化的
建议使用volatile的场所:
1)并行设备的硬件寄存器
2)一个中断服务子程序会访问到的非自动变量(全局变量)
3)多线程任务中被几个任务共享的变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值