C语言——register

register关键字用于声明寄存器变量,以提高访问速度。寄存器变量直接引用CPU寄存器,减少内存访问,提升程序性能。然而,寄存器数量有限,不是所有声明都能实现,且不能对寄存器变量取地址。在循环中频繁使用的变量适合声明为register。使用时需注意变量类型和数量的限制。
摘要由CSDN通过智能技术生成

前言

  register就和它的名字一样,很少出现在代码世界中,通常只会在一些特定的场合才会出现。它是如此地快,以至于CPU都对它刮目相看,但是它有一个致命的缺点,它的速度“看心情”而定,并不是每一次都能让人满意。

一、register的作用

如果一个变量用register来修饰,则意味着该变量会作为一个寄存器变量,让该变量的访问速度达到最快。例如,一个程序逻辑中有一个很大的循环,循环中有几个变量要频繁进行操作,这些变量可以声明为register类型。

二、寄存器变量

  寄存器变量是指一个变量直接引用寄存器,也就是对变量名的操作的结果是直接对寄存器进行访问。寄存器是CPU的“亲信”,CPU操作的每一个操作数和操作结果,都由寄存器来暂时保存,最后才写入内存或从内存中读出。也就是说,变量的值通常保存在内存中,CPU对变量进行读取是先将变量的值从内存中读取到寄存器中,再进行运算,运算完后将结果写回内存中。为什么要这么设计,不直接对变量的值在内存中进行运算,而要再借助于寄存器呢?这是由于考虑到性能的问题才这么设计的。在计算机系统中,包含很多种不同类型的存储器,如下图所示:
在这里插入图片描述
  在计算机中,CPU的运算速度最快,现在常用的CPU都已达3 GHz左右,而相对应的存储器速度却相对慢得多,访问速度最快的寄存器和缓冲,由于其体积较大,不适合大容量的缓冲使用,所以只能通过将二者结合的方式来提高效率。程序代码保存在内存中,当使用数据时,将其送到寄存器,让CPU来访问,使用完毕后,再送回内存保存。C语言允许使用寄存器保存变量的值,很明显这样能大大提高程序的执行速度。但是,寄存器的个数是有限的,X86也就是十几个,AMR最多才37个,我们不可能将全部的变量都声明为寄存器变量,因为其他代码也需要使用寄存器,同样,我们声明的寄存器变量也不一定直接保存在寄存器中,因为寄存器可能全部都被其他代码占用。编译器只能尽量把变量安排在寄存器中。

总结:

在使用寄存器变量时,请注意:
(1)待声明为寄存器变量的类型应该是CPU寄存器所能接受的类型,寄存器变量是单个变量,变量长度应该小于等于寄存器长度。
(2)不能对寄存器变量使用取地址符“&”,因为该变量没有内存地址。
(3)尽量在大量、频繁操作时使用寄存器变量,且声明的变量个数应该尽量少。

  • 32
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香蕉牛奶糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值