C/C++整理
发布日期:2022-02-17 02:39:50 浏览次数:30 分类:技术文章

本文共 707 字,大约阅读时间需要 2 分钟。

C/C++整理

const和volatile

  1. const

const关键字修饰变量,表示该变量为常量,不能修改常量的值。

如果const修饰*,表示该指针变量指向的是常量,不能通过该指针变量修改指向的内容,但该指针变量的值可以修改。
注:const修饰指针变量时,如果const位于的左侧,则const就是来修饰指针变量指向的内容,即指针变量指向的内容为常量;
如果const位于
右侧,则const修饰的是指针变量,即指针变量的值是常量。
补:const int n=10;
int a[n];//在C中,编译时不知道n的值,将其看成0,所以会编译出错;在C++中,编译时知道n的值,编译不会出错。

2.volatile

volatile关键字:易变的。即告诉编译器volatile变量是随时可能发生变化的,与volatile变量有关的运算不要进行编译优化,以免出错。

int square(volatile int ptr)
{
return ptr * ptr;
}
返回值可能不是所期望的平方值。因为告诉编译器
ptr是随时可能发生变化的,每次使用它的时候必须从它的地址中读取,如果没有volatile关键字,编译器的优化做法是由于两次从ptr读取
ptr时没有对
ptr进行操作,编译器会会把第一次读取的数据放在第二个ptr中,而不是重新读取。所以ptr可能被意外地修改,因此这两个值可能是不同的,返回值可能不是所期望的平方值。
总之:(1)volatile关键字告诉编译器不能做任何优化;(2)由于用volatile定义的变量会在程序外被改变,每次都必须从内存中读取,所以不能放在cache或寄存器中重复使用。

转载地址:https://blog.csdn.net/qq_39814715/article/details/108877648 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:vue 官方文档 - 处理边界情况
下一篇:抽象工厂实例理解

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年02月28日 20时01分35秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

如何实现java文档注释_JavaDoc注释与帮助说明文档 2019-04-21
Java一亿电话号码去重_20 亿个数字在 4G 内存中如何去重排序:快来试一试 BitMap... 2019-04-21
java判断ipv6地址类型_IPv6地址类型与格式 2019-04-21
linux java jdk_linux安装JDK 2019-04-21
java的showcase_java – 如何在Eclipse中导入ShowcaseView? 2019-04-21
JAVA中math的作用_Java中Random 和 Math 的概述及使用(二十六) 2019-04-21
mysql排序rank_MySQL_实现组内排序-Oracle中的rank()函数的功能 2019-04-21
vim自定义html,html - 寻找一种使用VIM在HTML中直接生成漂亮代码段的方法 - 堆栈内存溢出... 2019-04-21
python时间序列因果检验_用python做时间序列预测八:Granger causality test(格兰杰因果检验)... 2019-04-21
python numpy 函数详解_python使用numpy中的size()函数实例用法详解 2019-04-21
java spring上传文件_Java Spring文件上传,Java文件上传,Java通用文件上传 2019-04-21
linux 模拟键盘输入到进程,Linux 下模拟键盘输入 2019-04-21
linux服务器上已安装R 用户下载R包,R语言安装R package的2种方法 2019-04-21
linux 7 磁盘空间太小,Linux下磁盘保留空间的调整,解决df看到的空间和实际磁盘大小不一致的问题... 2019-04-21
linux下mysql 备份方法,Linux下mysql数据库备份方法小结 2019-04-21
bootstrap 页面垂直居中_iframe中如何让layer提示框显示在垂直居中的位置 2019-04-21
肺部ct重建_胸片检查容易漏诊肺癌,去年正常今年晚期常发生,体检一定要做CT... 2019-04-21
3dmax如何拆分模型_3D建模大佬如何制作出惊艳四方的游戏建模,看完这篇文章我知道了... 2019-04-21
x86so文件装换成arm64位_64位系统正式发布说明及介绍!! 2019-04-21
for循环中取出最大最小 累加_LeetCode之长度最小的子数组 2019-04-21