在变量寄存器中,变量什么为独立存储器

如题所述

寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。下面小编给大家介绍一下“寄存器变量是什么变量 寄存器变量怎么用”

一、寄存器变量是什么变量

在程序运行时,根据需要到内存中相应的存储单元中调用,如果一个变量在程序中频繁使用,例如循环变量,那么,系统就必须多次访问内存中的该单元,影响程序的执行效率。因此,C语言\C++语言还定义了一种变量,不是保存在内存上,而是直接存储在CPU中的寄存器中,这种变量称为寄存器变量。

寄存器变量的定义形式是:

register 类型标识符 变量名

寄存器是与机器硬件密切相关的,不同类型的计算机,寄存器的数目是不一样的,通常为2到3个,对于在一个函数中说明的多于2到3个的寄存器变量,C编译程序会自动地将寄存器变量变为自动变量。

由于受硬件寄存器长度的限制,所以寄存器变量只能是char、int或指针型。寄存器说明符只能用于说明函数中的变量和函数中的形参,因此不允许将外部变量或静态变量说为"register"。

register型变量常用于作为循环控制变量,这是使用它的高速特点的最佳场合。

register[寄存器]变量告诉编译器相关的变量应该改量存储在高速度的寄存器中。使用register存储类型的目的一般是为了提高执行速度,但是,register声明只是向编译器所提出的“建议”,并非强制要求。



(图片来源于互联网)

二、寄存器变量怎么用

以下为一个寄存器变量的声明:

register int variable;

寄存器变量:如果访问过于频繁,可使用此变量直接从寄存器访问。

eg.

#include <stdio.h> /*编译预处理指令*/

int sum ( int n );

/*一个函数声明语句,sum(...)是一个名字叫sum的函数声明,前边的int说明该函数的返回值是整型;(int n)说明传递函数的形参是一个整型变量*/

int main () /*主函数的函数头*/

{

int i , s; /*定义整型变量i,s*/

for ( i=1 ; i < = 5 ; i++ )

/*循环语句,首先执行 i = 1;

赋初值,再执行 i < =5;

判断是否符合条件,如果符合就执行 { } 里循环体的语句,执行完后,再执行 i ++ 运算,i ++ 等价于 i = i +1;

再执行 i < = 5 进行条件判断,如果符合就执行 { } 里循环体的语句,不符则跳出循环*/

printf ( " 前 % d 个自然数的和是 % d \n ", i, sum ( i ) );

/*第一个 % d 对应的是 i ,第二个 %d 对应的是 sum ( i ),sum ( i )是一个函数,返回值是int ;

第二个 % d 是整型的,所以第二个 sum ( i ) 返回前 i 项和*/

int sum ( int n )

/*定义一个返回值是整型的函数 sum ,它接受一个整型参数变量n*/

{

register int i , s = 0 ; /*定义寄存器变量*/

for ( i = 1 ; i < = n ; i ++ ) /*循环 n 次 */

s + = i ; /*赋值语句,等价于 s = s + i */

return s ; /*函数返回值*/

}

写此程序的目的:测试寄存器变量的用法,像以上内容,如果频繁访问 i 的值,则可以使用寄存变量。

register要与不要的区别:

凡是声明为 register 的变量,操作系统都会企图将其放入寄存器中以加快速度,如果寄存器中满了,则将由计算机硬件将寄存器中最久未使用的变量调入到高速缓冲存储器(Cache) 中,同时放入你的变量。

寄存器是CPU的一部分,所以其访问速度会远远高于同内存的访问速度。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网