register---C语言中最快的关键字
来源:互联网 发布:人机对话英语软件 编辑:程序博客网 时间:2024/04/29 08:06
register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。
注意是尽可能,不是绝对。你想想,一个CPU的寄存器也就那么几个或几十个,你要是定义了很多很多register变量,它累死也可能不能全部把这些变量放入寄存器吧,轮也可能轮不到你。
一、皇帝身边的小太监----寄存器
不知道什么是寄存器?那见过太监没有?没有?其实我也没有。没见过不要紧,见过就麻烦大了。大家都看过古装戏,那些皇帝们要阅读奏章的时候,大臣总是先将奏章交给皇帝旁边的小太监,小太监呢再交给皇帝同志处理。这个小太监只是个中转站,并无别的功能。
好,那我们再联想到我们的CPU。CPU 不就是我们的皇帝同志么?大臣就相当于我们的内存,数据从他这拿出来。那小太监就是我们的寄存器了(这里先不考虑CPU 的高速缓存区)。数据从内存里拿出来先放到寄存器,然后CPU 再从寄存器里读取数据来处理,处理完后同样把数据通过寄存器存放到内存里,CPU 不直接和内存打交道。这里要说明的一点是:小太监是主动的从大臣手里接过奏章,然后主动的交给皇帝同志,但寄存器没这么自觉,它从不主动干什么事。一个皇帝可能有好些小太监,那么一个CPU 也可以有很多寄存器,不同型号的CPU 拥有寄存器的数量不一样。
为啥要这么麻烦啊?速度!就是因为速度。寄存器其实就是一块一块小的存储空间,只不过其存取速度要比内存快得多。进水楼台先得月嘛,它离CPU 很近,CPU 一伸手就拿到数据了,比在那么大的一块内存里去寻找某个地址上的数据是不是快多了?那有人问既然它速度那么快,那我们的内存硬盘都改成寄存器得了呗。我要说的是:你真有钱!
二、使用register 修饰符的注意点
虽然寄存器的速度非常快,但是使用register 修饰符也有些限制的:register 变量必须是能被CPU 寄存器所接受的类型。意味着register 变量必须是一个单个的值,并且其长度应小于或等于整型的长度。而且register 变量可能不存放在内存中,所以不能用取址运算符“&”来获取register 变量的地址。
- register---C语言中最快的关键字
- C语言register关键字—最快的关键字(转)
- C语言register关键字—最快的关键字
- C语言register关键字—最快的关键字
- C语言register关键字—最快的关键字
- C语言register关键字—最快的关键字
- C语言register关键字—最快的关键字
- 2、C语言register关键字—最快的关键字
- C语言register关键字—最快的关键字
- C语言register关键字—最快的关键字
- C语言register关键字—最快的关键字
- C语言register关键字—最快的关键字
- C语言register关键字—最快的关键字
- C语言register关键字—最快的关键字
- C语言register关键字——最快的关键字
- C语言register关键字—最快的关键字
- C语言register关键字—最快的…
- 关于c语言中register关键字
- 街头篮球解封器丨辅助挂代码 - 分享不断,活动不断!
- QT程序打包发布 - 免安装
- Serializable(序列化)
- JavaScript Window Navigator
- Oracle索引相关介绍
- register---C语言中最快的关键字
- 做前端css/div布局的总结
- TCP 心跳包
- 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题
- STM32 IAP
- Linux Cgroups详解(一)
- Qt - 让VC2012生成的程序支持XP系统
- How to learn js properly(week4)使用js建立的动态测试网页
- Android开发、测试持续集成环境Jenkins搭建