register变量
为了提高效率,C 语言允许将局部变量得值放在 CPU 中的寄存器中,这种变量叫“寄存器变量”,用关键字 register 作声明。
【例】使用寄存器变量。
#include <stdio.h>
int fac(int n) {
register int i, f = 1;
for(i = 1; i <= n; i++)
f = f * i;
return(f);
}
int main() {
int i;
for(i = 0; i <= 5; i++)
printf("%d!=%d\n", i, fac(i));
return 0;
}
说明:
1) 只有局部自动变量和形式参数可以作为寄存器变量;
2) 一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;
3) 局部静态变量不能定义为寄存器变量。
用extern声明外部变量
外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字 extern 对该变量作“外部变量声明”。表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。
【例】用 extern 声明外部变量,扩展程序文件中的作用域。
#include <stdio.h>
int max(int x, int y) {
int z;
z = x > y ? x : y;
return(z);
}
int main() {
extern int A,B;
printf("%d\n", max(A, B));
return 0;
}
int A = 13, B = -8;
说明:在本程序文件的最后 1 行定义了外部变量 A,B,但由于外部变量定义的位置在函数 main 之后,因此本来在 main 函数中不能引用外部变量 A,B。现在我们在 main 函数中用 extern 对 A 和 B 进行“外部变量声明”,就可以从“声明”处起,合法地使用该外部变量 A 和 B。
掌握本节内容
登录后开始许愿
暂无评论,来抢沙发