1. register & 寄存器
register int a = 10;
被register修饰的变量会被***建议***存放在寄存器中,但只是建议,主要还是由操作系统决定。
寄存器是一种造价很高、读写速度很快的存储设备。
存储设备 | 空间大小 |
---|---|
寄存器(regs) | 4byte,CPU通常集成几十个寄存器 |
高速缓存(cache) | 128M,CPU通常集成集成多个高速缓存 |
内存(memory) | 4G/8G/16G/32G等 |
固态硬盘(SSD) | 常见有256G/512G/1T大小等 |
机械硬盘(HHD) | 通常比SSD更大 |
网盘 | 通常以T为单位 |
光盘 | - |
磁带 | - |
读写速度越快,造价就越高,空间大小就越小;或者可以这么说,离CPU越近的存储设备,速度越快,如寄存器和高速缓存就是集成在CPU中的。
运算操作都是由CPU完成,如果说变量直接就是存放在寄存器中,那么等于说直接在CPU内进行运算操作,不用从内存甚至是硬盘中读取,这就是速度快的原因。在硬件层面上,提高计算机的运算效率。
小插曲:放在百度网盘中的文件,如果你不经常使用它,那就会被百度网盘放在廉价的网盘设备中,这就是为什么经常使用的文件下载/访问速度更快的原因。
2. 什么样的变量可以采用register呢?
-
局部的变量(全局会导致CPU寄存器被长时间占用);
-
不会被写入的(写入就需要写回内存,写入的意思就是变量被二次赋值了,也就是被修改值了,这时CPU要对变量进行运算操作修改值,然后将其写回内存);
-
高频被读取的(提高效率所在);
3. 使用register的误区
-
注意不要大量使用,因为寄存器数量有限,一般修饰一两个、两三个就够了。但事实上现在的编译器已经足够聪明,经常被使用的变量,编译器会主动将其放入寄存器准备使用,所以我们一般不用管。文章来源:https://www.toymoban.com/news/detail-734657.html
-
register修饰的变量不能取地址,这是因为变量已经放在寄存区中了,而地址是内存的概念(内存地址)。文章来源地址https://www.toymoban.com/news/detail-734657.html
到了这里,关于【C语言】理解最快的关键字:register 和 寄存器的地位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!