转载自 https://blog.csdn.net/mouse_ts/article/details/45097603

用register声明的变量是寄存器变量,是存放在CPU的寄存器里的。而我们平时声明的变量是存放在内存中的。虽说内存的速度已经很快了,不过跟寄存器比起来还是差得远。
寄存器变量和普通变量比起来速度上的差异很大,毕竟CPU的速度远远大于内存的速度。寄存器有这么两个特点,一个是运算速度快,一个是不能取地址。

学过C的都应该知道每一个变量在内存中都占有一定的的空间,来存放数据。但是在寄存器中的变量是不能取地址的,编译器会报错。

来我们看看寄存器变量和普通话的变量的速度到底能差多少。

这段代码运行用了0.952秒

这段代码运行用了0.094秒

实际使用时,底层硬件环境的实际情况对寄存器变量的使用会有一些限制。每个函数中只有很少的变量可以保存在寄存器中,且只允许某些类型的变量。但是,过量的寄存器声明并没有什么害处,这是因为编译器可以忽略过量的或者不支持的寄存器变量声明。另外,无论寄存器变量实际上是不是存放在寄存器中,它的地址都是不能访问的。在不同的机器中,对寄存器变量的数目和类型的具体限制也是不同的。

——《C程序设计语言(第二版) Brain W.Kernighan & Dennis M.Ritchie》

C语言寄存器变量register相关推荐

  1. c语言复习--寄存器变量(register)

    一般变量储存于内存中,如果有需要反复调用的,则会因访问流程的复杂影响运行效率,因此有另一类变量直接存储在寄存器之中. 其说明形式为:            register     类型标识符    ...

  2. c语言变量作用域生命周期,C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期...

    谭浩强书: 从存储模型可以看到,谭浩强和钱能的模型有一定的对应关系: 静态存储区  ->  全局数据区 动态存储区  ->  栈(stack) 变量的类型: 1. 局部变量和全局变量 局部 ...

  3. C语言之变量存储类型与链接属性

    文章出自个人博客https://knightyun.github.io/2018/04/28/c-storage-type,转载请申明 C语言中一个重要的东西就是弄清申明变量的类型.作用域.存储类型. ...

  4. c语言存储汉字的变量类型,C语言之变量存储类型与链接属性

    C语言中一个重要的东西就是弄清申明变量的类型.作用域.存储类型.链接属性等,例如是整型还是浮点型,存储于普通内存还是堆栈或者寄存器,作用于全局还是局部,能否被其他文件 引用等. 链接属性 申明变量或函 ...

  5. C语言中变量和函数的声明与定义

    一.变量 在将变量前,先解释一下声明和定义这两个概念.声明一个变量意味着向编译器描述变量的类型,但并不为变量分配存储空间.定义一个变量意味着在声明变量的同时还要为变量分配存储空间.在定义一个变量的同时 ...

  6. 【C语言必经之路——第1节】自动变量(auto)外部变量(extern)静态变量(static)寄存器变量(register)

    目录 一.auto变量 二.extern变量 三.static变量 static的作用为: 1.修饰全局变量 2.修饰局部变量 3.修饰函数 四.register变量 一.auto变量 若定义一个局部 ...

  7. C语言 --- Register 寄存器变量解析

    Register 寄存器变量 定义 register声明告诉编译器,它所申明的变量在程序中使用频率较高.其思想是:将register变量到寄存器中,这样可以使程序更小.执行速度更快.但是编译器可以忽略 ...

  8. 【C语言】寄存器变量

    文章目录 1.寄存器变量 2.寄存器变量速度测试 1.寄存器变量 在程序运行时,根据需要到内存中相应的存储单元中调用,如果一个变量在程序中频繁使用,例如循环变量,那么,系统就必须多次访问内存中的该单元 ...

  9. C语言中变量存储类别——自动变量,寄存器变量,静态外部链接;

    c提供了多种不同模型或存储类别在内存中存储数据. 作用域: 作用域描述程序中可访问标识符的区域. 作用域描述了程序中可以访问一个标识符的一个或多个区域.即变量的可见性. 一个变量的作用域可以是代码块作 ...

最新文章

  1. 01.MyBatis快速入门
  2. endnote参考文献排版_Endnote参考文献管理软件文献插入排版
  3. OPenGL实例化绘制、普通绘制说明
  4. ecplise安装flowable插件
  5. Jmeter简单的登录压力测试(使用json发送post请求)
  6. DBA_OBJECTS
  7. [蓝桥杯历届试题] 汉诺塔计数
  8. js正则表达式匹配多个条件
  9. 非计软专业的学生也能看懂的面向对象编程(《面向对象编程是怎样工作的》平野章/著 读书笔记)
  10. java tcr,运动入门 通勤健身良伴 2019款 Giant TCR SL2 评测
  11. 互联网金融消费利用场景化带动行业发展趋势
  12. 图片显示上下有空白的解决办法
  13. tornado源码分析-Application
  14. MacVim中文乱码解决
  15. 通过炒股实现财务自由的人,都做对了什么?
  16. 毕业了,让我们唱起这十首歌!
  17. Git(5) SourceTree安装使用
  18. #十二、编写三角形类Triangle,初始化三个属性,分别是三条边的长度,定义一个计算并打印周长的函数 #十三、编写等腰三角形类EWtriangle,继承于三角形类,初始化只用传一个腰长和一个底长,定
  19. 远控木马上演白利用偷天神技:揭秘假破解工具背后的盗刷暗流
  20. 最实用的CDN绕过-CMS识别-WAF识别技术总结

热门文章

  1. c++ 调用 python脚本, runtime error r6034
  2. C# 实现医学影像 DICOM 工作站(2):Dicom影像导入和工作列表
  3. CPU Utilization is Wrong
  4. android 日历 农历算法
  5. 慢的yong-gc怎么排查
  6. 安科瑞精密配电监控在数据中心的应用-Susie 周
  7. 创弘星鹏:运营抖音小店重要知识分享
  8. 页面gridview保留两位小数
  9. keras_猫狗分类案例(三)_卷机神经网络的可视化(可视化卷积神经网络的中间输出)
  10. 阿里云服务器美国西部 1、美国西部 2、美国东部 1、 美国东部 2是哪个城市