C语言 register 变量
一般情况下,变量数组等都是存储在内存中的,如果程序中某个代码段(如循环)会对一个变量反复读写,这样就需要频繁访问内存,如果将频繁操作的变量放在CPU内部,就不需要访问内存了。为此,C语言提供了寄存器变量。这种变量存放在CPU的寄存器中,使用时不需要访问内存,而直接从寄存器中读写,寄存器变量的定义形式是:
register 数据类型 变量表列;
说明:
(1)变量存储在寄存器中读写操作比储存在内存中快,所以建议将循环次数较多的循环控制变量及循环体内反复使用的变量均定义为寄存器变量。
(2)计算机系统中寄存器的数目是有限的,所以不能把所有变量全部定义为寄存器变量。C语 言编译系统会自动地将超过限制数目的寄存器变量当作自动变量进行处理。
(3)只有局部变量和形参可以作为寄存器变量,其他如全局变量不可以,局部静态变置也不可以定义成寄存器型。
(4)对于寄存器变量,当函数调用时,会占用一些寄存器存放寄存器变量,当函数调用结束,释放所占寄存器。
(5)不同编译系统对寄存器变量的处理是不一样的,有的编译系统直接把寄存器变量作为auto变量,分配内存空间,并不真的将它们存放在CPU的寄存器中。
例如:
#include <stdio.h>
int fun(int n)
{
register int s=0,i;
for (i=l;i<=n;i++)
s=s+i;
return s;
}
main()
{
int n;
printf("input n:\n");
scanf("%d",&n);
printf("%d\n",fun(n));
}
程序中的fun()函数的i为循环变量,s为每次循环需要累加操作,所以经常使用,因此将其定义为寄存器变量。
点击加载更多评论>>