寄存器变量

本文转自百度百科

寄存器变量


在程序运行时,根据需要到内存中相应的存储单元中调用,如果一个变量在程序中频繁使用,例如循环变量,那么,系统就必须多次访问内存中的该单元,影响程序的执行效率。因此,C\C++语言还定义了一种变量,不是保存在内存上,而是直接存储在CPU中的寄存器中,这种变量称为寄存器变量。  寄存器变量的定义形式是:  register 类型标识符 变量名   寄存器是与机器硬件密切相关的,不同类型的计算机,寄存器的数目是不一样的,通常为2到3个,对于在一个函数中说明的多于2到3个的寄存器变量,C编译程序会自动地将寄存器变量变为自动变量。   由于受硬件寄存器长度的限制,所以寄存器变量只能是char、int或指针型。寄存器说明符只能用于说明函数中的变量和函数中的形参,因此不允许将外部变量或静态变量说明为"register"。  register型变量常用于作为循环控制变量,这是使用它的高速特点的最佳场合。比较下面两个程序的运算速度。


/* 程序1 */ 

 main ( )

  {   

register int temp, i; 

 for ( i=0; i<=30000; i++ )  

for ( temp=0; temp<=100; temp++ ) ;  

printf ("ok\n");  }  

/* 程序2 */  

#include <stdio.h> 

 main( ) 

 

{   int temp, i;

  for ( i=0; i<=30000; i++ ) 

 for ( temp=0; temp<=100; temp++ ) ;  

printf ("ok\n");  }  

这两个程序中,前者使用了两个寄存器变量,后者使用了两个自动变量程序除此之外完全一样。

但运行时感觉的执行速度是不同的,前者使用寄存器变量的程序要比后者使用自动变量的程序要快。

如果在tubro 2的环境下运行程序2,则应该将编译器优化选项"use register variable"开关关上(OFF)

,否则,编译器自动优化程序使用寄存器,两个程序会得到相同的结果。)  

由于register变量使用的是硬件CPU中的寄存器,寄存器变量无地址,所以不能使用取地址运算符"&"求寄存器变量的地址。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值