文章目录

  • 1 register关键字
  • 2 C++中的register关键字

1 register关键字

对于register关键字:

  • register关键字只能作用于局部变量,不能作用于全局变量。
  • register关键字指明将局部变量存储于寄存器中。
  • register只是请求寄存器变量,但不一定请求成功。
  • register变量的必须是CPU寄存器可以接受的值。
  • 不能用&运算符获取register变量的地址。


2 C++中的register关键字

register关键字请求编译器将局部变量存储于寄存器中,在C++中依然支持register关键字(存在的目的就是为了兼容C语言)。

C++编译器有自己的优化方式:

  • C语言中无法获取register变量的地址。
  • C++中可以取得register变量的地址。

C++中的register关键字:

  • C++编译器发现程序中需要register变量的地址时,register对变量的声明变得无效(早期的做法,register对于现在的编译器来说形同虚设)。
  • 早期的C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。

注意:在任何情况下,都不可能取得一个寄存器的地址,因为地址都是针对内存来说的,不是针对寄存器来说的。


参考资料:

  1. C语言进阶剖析教程
  2. C++深度解析教程

register关键字相关推荐

  1. C++对C的加强之register关键字增强

    register关键字增强 前言 register关键字的变化 前言 //register关键字 请求编译器让变量a直接放在寄存器里面,速度快 //在c语言中 register修饰的变量 不能取地址, ...

  2. C语言register关键字——最快的关键字

    C语言register关键字-最快的关键字 (2012-08-24 14:09:24) 转载▼ 标签: 杂谈 分类: C/C    register:这个关键字请求编译器尽可能的将变量存在CPU内部寄 ...

  3. register关键字的使用

    前言 本文用简单代码实验介绍register关键字的使用. 上代码 #include <stdio.h>int main(void) {int i;int tmp = 0;for (i=1 ...

  4. C语言register关键字—最快的关键字

    register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率.注意是尽可能,不是绝对.你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很 ...

  5. 【C++】register 关键字

    文章目录 一. 什么是寄存器? 二. 为什么要存在寄存器? 三. register 修饰变量 一. 什么是寄存器? 我们都知道,CPU主要是负责进行计算的硬件单,但是为了方便运算,一般第一步需要先把数 ...

  6. C和指针之auto和内存栈和register关键字

    1.auto 在C代码中每个函数都有其生命周期(也称作用域),在函数生命周期中声明的变量通常叫做局部变量,也叫自动变量.例如: 复制代码代码如下: int chenyu(){ int a = 10; ...

  7. register关键字-1

    #include<iostream>using namespace std;int main(int argc, char*argv[]) /* Rong Tao 2018.03.19 * ...

  8. C++ register 关键字

    register 简介: register 就像是汉语和英语中的形容词(不要问为什么只有两种语言,因为小编只会这两种),在 C++ 中 register 是用来修饰变量的. register 的作用: ...

  9. 详细说明register关键字

    一 register的作用(加上volatile都是让其变成易变的,防止编译器对其进行优化) 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了. ...

最新文章

  1. Hive环境的安装部署(完美安装)(集群内或集群外都适用)(含卸载自带mysql安装指定版本)...
  2. 在jMeter里如何创建用户定义的能生成随机数的变量
  3. bat java 指定堆大小_jvm 堆内存 栈内存 大小设置 查看堆大小
  4. 68.iOS设备尺寸及型号代码(iPhoneXR/XS)
  5. 回顾 | 在 GitHub 上贡献到开源项目
  6. 3dsmax怎么添加uv坐标_YND科研绘图3Dsmax基础操作
  7. 10分钟教你用VS2017将代码上传到GitHub
  8. FreeBSD内核简介
  9. 选择排序:简单选择排序
  10. cordova 安装ssl证书_超详细cordova环境配置(windows)及实例
  11. Unity中 创建射线的两种方法
  12. Fish 环境下如何安装 nvm
  13. armv6, armv7, armv7s, arm64 的区别
  14. 梦幻群侠传5帮派修炼_梦幻群侠传5手游下载
  15. linux内核源码 进程,详解:Linux内核源代码
  16. abb机器人指令手册_ABB机器人加速度设置
  17. 电驴搜索服务器正在连接,电驴连接不上服务器导致无法搜索解决的方法介绍
  18. 从客户需求开始你的供应链管理战略
  19. android实现手机号验证码注册
  20. 手机英文上面的逗号怎么打_英文中关于逗号使用方法

热门文章

  1. k8s pod基础概念
  2. tcp 与udp 的区别
  3. 董树义 近代微波测量技术_潘时龙:28岁推开微波光子学大门
  4. 10-4 查找至少选修两门课程的学生学号
  5. 实验(1)信号的采样
  6. poi导出excel包含图片,弹出页面下载框
  7. key_t键和ftok函数
  8. 42-Map集合遍历键找值方式-键值对对象Entry-键值对方式遍历
  9. 百度实习转正学长面经-Java常见面试题目和解答,值得收藏
  10. Arcgis 熟练和操作