关于变量的声明和定义
标签: C语言
学习人数: 11.4k

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。

登录查看完整内容


课后作业

掌握本节内容


登录后开始许愿

暂无评论,来抢沙发