对volatile类型修饰符的理解

本文详细解析了volatile关键字在程序中的作用及使用场景。volatile用于标记可能被后台程序改变的变量,并确保每次读取变量时都能从内存中获取最新的值,而非从寄存器中复制旧值。此外,还介绍了volatile如何禁止编译器对特定变量的操作进行优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.volatile和const相同都属于类型修饰符,但是两者是对立的。volatile表示修饰的变量可能会被后台程序改变,这种改变是未知的。
变量如果加了volatile修饰,每次对变量进行读取操作时都是从内存中去加载变量的内容,而不是从寄存器中拷贝内容。举个栗子:
void main(void){
     int a,b;
    int i=10;
    a=i;

    b=i;

}//在这个a=i,b=i,这个过程中由于没有对i进行过操作,那么在a=i之后,在执行b=i,的过程中,编译器会进行优化,直接从寄存器中拷贝i即i的副本赋值给b;如果这样volatile int i=10;这样修饰变量,每次赋值操作的时候,都会从i的地址中读取。因此volatile可以保证对特殊地址的访问。

2、总结volatile的作用:表示变量是易变的,当用volatile修饰变量时,系统总是从它所在的内存读取数据,即与该变量有关的运算禁止编译器进行编译优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值