【C语言】寄存器变量


1、寄存器变量

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

register int i=100;
  • C编译程序会自动地将寄存器变量变为自动变量
  • 由于受硬件寄存器长度的限制,所以寄存器变量只能是char、int或指针型。寄存器说明符只能用于说明函数中的变量和函数中的形参,因此不允许将外部变量或静态变量说明为"register"
  • register变量使用的是硬件CPU中的寄存器,寄存器变量无地址,所以不能使用取地址运算符"&"求寄存器变量的地址。

2、寄存器变量速度测试

  • 对于VC编译器会自动优化,即使没有声明寄存器变量,VC也会自动优化。

  • 对于GCC编译器就不会自动优化。

#include <stdio.h>
#include<stdlib.h>
#include<time.h>


int main()
{
    
    
    register int temp, i;
    //int temp, i;
    time_t start, end;
    time(&start);//获取当前时间
    for (i = 0; i <= 30000000; i++)
        for (temp = 0; temp <= 100; temp++);
    printf("ok\n");
    time(&end);
    printf("%d\n",(unsigned int)(end-start));
    return 0;
}

gcc编译器来编译,用寄存器变量执行时间为2秒
不用寄存器变量执行时间为6秒。

猜你喜欢

转载自blog.csdn.net/chuhe163/article/details/103839196