6. register 关键字
register 关键字是声明一个局部变量或一个形式参数变量为寄存器变量,这个变量在编译时可能会独占一个 CPU 的通用寄存器,以提高计算机的运行速读。
语法:
register 数据类型 变量名1, 变量名2, ...;
说明:
- 只有局部变量和形式参数变量可以声明为寄存器变量,全局变量和和静态局部变量不能声明为寄存器变量。
- 由于 CPU 内的通用寄存器数量有限,因此在函数内不能声明超过 CPU 通用寄存器的个数的寄存器变量。
- 声明过多的寄存器变量,可能会因为可用的通用寄存器过少致使程序运行缓慢。
- 只有使用频率特别高的变量才有必要声明为寄存器变量。
示例:
// filename: register.c
#include <stdio.h>
// 求 n 的阶乘 n!
int factorial(register int n) {
register int result = 1;
if (n < 1)
return 0;
while(n > 1) {
result *= n;
n--;
}
return result;
}
int main(int argc, char * argv[]) {
printf("3!: %d\n", factorial(3));
printf("5!: %d\n", factorial(5));
return 0;
}
编译和运行结果如下:
weimingze@mzstudio:~$ gcc -o register register.c
weimingze@mzstudio:~$ ./register
3!: 6
5!: 120
实验
尝试使用你的编译器运行上述示例程序。