register关键字


文章目录

  • register关键字
  • 前言
  • 一、register作用
  • 二、储存原件
    • 那么什么样的变量可以用register修饰呢?
  • 总结

前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、register作用

register关键字是将所修饰变量尽可能放到寄存器中,从而提高效率。
这里要注意只是可能,不一定绝对。

到底什么是寄存器呢?
那么为什么寄存器快呢?

二、储存原件

我们知道计算机能用来储存的东西有很多,比如SSD(固态硬盘),内存,acache(高速缓存处理器),硬盘,光盘,甚至年代比较远的磁带等等都是用来储存的。
那么在这里我们只简单介绍计算机中各种储存的关系,详细请参考
https://blog.csdn.net/ILV_XJ/article/details/78026838



在储存金字塔中越往上,离CPU越近,效率越高,但是价格很贵。
越往下,离CPU越远,效率越低,越便宜。
因此电脑上register的数量是有限的,一个程序一般用一两个。

那么什么样的变量可以用register修饰呢?

  • 局部的(全局会导致CPU寄存器被长时间占用)

  • 不会被写入的(写入就需要写回内存,后续还要读取检测的话,register的意义在哪呢?)

  • 高频被读取的(提高效率所在)

  • 如果要使用,请不要大量使用,因为寄存器数量有限

并且还有一点要注意!regist修饰的变量不能取地址
寄存器中没有地址的概念,地址是在内存中相关的。

代码如下(示例):

 register int a = 0;printf("%d\n", a);printf("%d\n", &a);

取地址此时就会报错


错误  C2103   寄存器变量上的“&”  

总结

register修饰的变量只是有可能在寄存器,无论是register使用过多,还是编译器不给你放到寄存器,因为不能确定因此register修饰的变量都不要取地址&。

详解C语言最快关键字——register相关推荐

  1. C语言中定义常量的关键字是什么,C++_详解C语言中const关键字的用法,关键字const用来定义常量,如 - phpStudy...

    详解C语言中const关键字的用法 关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const ...

  2. 详解go语言的array和slice 【二】

    上一篇  详解go语言的array和slice [一]已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多.上一篇的最后讲 ...

  3. #转载:杨辉三角形实现过程详解-c语言基础

    杨辉三角形实现过程详解-C语言基础 十一一个人 2018-12-26 06:45:45 6465 收藏 28 最后发布:2018-12-26 06:45:45首发:2018-12-26 06:45:4 ...

  4. DBus glib 各数据类型接收与发送详解—C语言(3)

    DBus glib 各数据类型接收与发送详解-C语言(3) 动机 前置知识 正文 Python 测试服务 使用 C 实现复杂数据类型的传递 DICT_DICT ObjectPath_Dict_Stru ...

  5. 武林c语言,详解C语言中条件编译

    预处理器提供条件编译,程序的不同部分可以在不同的条件下编译,从而产生不同的目标代码文件,这对于程序移植和调试非常有用,本文是武林技术频道小编给为大家带来的详解中条件编译,一起来了解一下吧! 通常情况, ...

  6. c语言malloc用法 数组,详解C语言用malloc函数申请二维动态数组的实例

    详解C语言用malloc函数申请二维动态数组的实例 C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单. Sample one #include int main() { c ...

  7. php怎么求最小公倍数,C++_详解C语言求两个数的最大公约数及最小公倍数的方法,求两个正整数的最大公约数nbs - phpStudy...

    详解C语言求两个数的最大公约数及最小公倍数的方法 求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法.通式分别为 f(x, y) = f(y, x%y) ...

  8. 你是真的“C”——详解C语言函数模块知识(上篇)

    详解C语言函数模块知识(上篇)

  9. php 微信 公众 平台,微信公众平台代码详解-php语言(一)

    2.这里把它粘贴出来,以注释的形式进行讲解. 3.首先我们要知道一些基础的知识: (1)要有自己的网站--公网环境,其中一个php页面处理微信消息: (2)微信公众平台和网站服务器之间是通过XML数据 ...

最新文章

  1. 统计学常犯的18个错误,请务必跳过这些坑!
  2. python温度转换代码_用python编写一个名为“convert_temp”的温度转换函数
  3. 11月份写什么,由你来决定——学堂需求调查
  4. 手把手图文并茂教你发布Android开源库
  5. Android性能优化-过度绘制解决方案
  6. 使用matlab计算并绘制连续信号的傅里叶变换
  7. 软件测试书籍有哪些_软件测试书籍推荐
  8. 让你的手机不输kindle的3款epub阅读器
  9. oracle的安装(因为oracle版本安装各有差异,今天先讲最简单的安装,至于每个版本的具体安装度妈会讲,下一章同样会介绍可视化工具)
  10. 实在不行来瓶敌敌畏吧!Scrapy框架爬取某农药肥料网站+异步Mysql数据库存储
  11. 单总体分布卡方拟合优度检验
  12. 火影忍者ol手游服务器注册上限怎么办,火影忍者ol手游服务器人数爆满怎么进_服务器爆满解决方法...
  13. Frida-dexdump使用,frida环境配置
  14. python 用cx_Freeze打包程序详细解读setup.py
  15. 如何利用等比频宽公式将信号分解成部分重叠的子频段
  16. Cisco(60)——DHCPv6
  17. 【YOLO学习笔记——数据集】之一YOLO数据集制作2
  18. 人工神经网络的应用价值,人工智能神经网络应用
  19. 【MarkDown】CSDN Markdown之时间轴图timeline详解
  20. 油液颗粒计数器在工业自动化进程中带来的巨大效益

热门文章

  1. ABI and ISA
  2. 机器人系统设计与制作:Python语言实现2.4 用LibreCAD生成机器人的二维CAD图
  3. 观点 | 银行业数据应用的瓶颈与打开思路
  4. ACM--博弈论入门--几种博弈游戏类型+题集
  5. python开发cs程序_CSE209代做、代写Computer Graphics、代做CS/python编程设计代写Python程序|代做Processing...
  6. SecureCRT命令行参数
  7. 欧拉定理及扩展(附证明)
  8. latex怎样让题号顶格_latex proof顶格
  9. OTFS白皮书-翻译
  10. solrcloud入门详细使用教程