C语言——register

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

前言

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

一、register的作用

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

二、寄存器变量

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

总结:

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

Register”常见释义及相关用法如下: ### 作为动词 1. **登记;注册** - 用于指将个人、物品等的信息记录在官方的名单或系统中。例如,在酒店入住时需要登记个人信息,可表达为“register at a hotel” 。 ```python # 以下是一个简单模拟用户在系统中注册的 Python 代码示例 user_database = {} def register_user(username, password): if username not in user_database: user_database[username] = password print(f"User {username} registered successfully.") else: print(f"User {username} already exists.") register_user("john_doe", "123456") ``` 2. **记录;登记(数量、变化等)** - 比如,仪器可以记录数据,“The thermometer registered 30 degrees Celsius.”(温度计显示为30摄氏度)。 3. **表达;表明** - 常用来描述通过某种方式传达某种情感、态度等。例如,“Her face registered surprise.”(她的脸上流露出惊讶的神情)。 4. **挂号;为…挂号** - 在医院看病时,需要挂号就诊,“register at the hospital” 就是在医院挂号的意思。 ### 作为名词 1. **登记簿;注册簿** - 是记录信息的本子或文件。例如,学校有学生的注册簿,“The school keeps a register of all students.”(学校保存着所有学生的注册簿)。 2. **(某一时期的)记录** - 如历史记录等,“the register of historical events”(历史事件的记录)。 3. **(语音的)语域** - 在语言学中,指因使用场合不同而产生的语言变体。例如,正式场合和非正式场合使用的语言在语域上有区别。 ### 常见短语 - **register for**:为…注册;报名参加。例如,“I registered for a cooking course.”(我报名参加了一个烹饪课程)。 - **register with**:向…登记;给…留下印象。例如,“You need to register with the local police.”(你需要向当地警方登记)。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

香蕉牛奶糖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值