深圳手机网站开发,帮助企业做网站的销售,网络维修,网页设计实验报告收获Volatile的作用
volatile 表明某个变量的值可能在外部被改变#xff0c;因此对这些变量的存取不能缓存到寄存器#xff0c;每次使用时需要重新存取。
Const 和 Volatile的示例
示例1
int main()
{const int a 1;int* pa const_castint*(a);*pa 4;cout 因此对这些变量的存取不能缓存到寄存器每次使用时需要重新存取。
Const 和 Volatile的示例
示例1
int main()
{const int a 1;int* pa const_castint*(a);*pa 4;cout a endl;cout *pa endl;
}输出
1
4对const常量a 通过访问地址把它的值修改了。 再直接调用a它还是修改之前的值。
示例2
int main()
{volatile const int a 1;int* pa const_castint*(a);*pa 4;cout a endl;cout *pa endl;
}输出
4
4通过volatile修饰const常量a。 对const常量a 通过访问地址把它的值修改了。 再直接调用a它是修改后的值。
示例3
const int a 1;
int main()
{int* pa const_castint*(a);*pa 4;cout a endl;cout *pa endl;return 0;
}输出 如果是全局const 常量是不允许通过访问地址的方式修改的可以访问地址读但是不能写。 所以也就不存在const优化和volatile修饰的问题。
结论
以上就是volatile修饰符的作用它告诉编译器它修饰的对象是一个会改变的值不要对它进行优化。 如果不用volatile修饰某些时候编译器会对变量进行优化会把它的值存储在寄存器或者别的地方方便快速读取。如果这个变量改变了编译器还是从寄存器快速读取就会发生问题。
参考
C和C里的const常量、volatile修饰符的深层次说明 - 挺详细有时间建议看这个