寄存器变量

302 阅读1分钟

C/C++语言定义了一种变量,不是保存在内存上,而是直接存储在CPU中的寄存器中,称为寄存器变量
特点:读取和改变的速度更快,高速
语法形式:register 类型标识符 变量名
由于受硬件寄存器长度的限制,寄存器变量只能是char、int或指针型。寄存器说明符只能用于说明中的变量和函数中的形参,因此不允许将外部变量或静态变量说明为“register”。
下面比较两个程序的运算速度
程序一

main ( )
{
register int temp, i;
for ( i=0; i<=30000; i++ )
for ( temp=0; temp<=100; temp++ ) ;
printf ("ok\n");
}

程序二

main( )
{
int temp, i;
for ( i=0; i<=30000; i++ )
for ( temp=0; temp<=100; temp++ ) ;
printf ("ok\n");
}

程序一使用两个寄存器变量,程序二使用了两个自动变量除此之外完全一样。但运行时速度是不同的,程序一使用寄存器变量的程序要比程序二使用自动变量的程序要快。

注意点:
1. 由于register变量使用的是硬件CPU的中的寄存器,寄存器变量无地址,所以不能使用去地址运算符“&”求寄存器变量的地址
2. 一个计算机中寄存器数量是有限的,一般为2到3个,因此寄存器变量的数量不能太多。对于在一个函数中说明的多于2到3个的寄存器数量,C编译程序会自动地将寄存器变量变为自动变量。