c 语言存储类型之extern


一、c语言存储类型 extern简介

extern存储类型通常用于多个文件之间共享变量,如果在一个变量前面指定extern ,就代表告诉编译器这个变量,在别的文件中已经定义过,此处之作申明。

总之,如果想访问另一个文件中定义的全局变量,那么就需要将当前文件中的变量加入 extern存储类型

例:
a1.c
extern int b1; //此处分配存储位置 不初始化
void main()
{
printf (“b1:%d\n”,b1);
}

a2.c
extern int b1; //此处分配存储位置 不初始化
void a2()
{
++b1;
}

a3.c
int b1;
void a3()
{
printf(“b1:%d\n”,b1);
}


二、c语言存储类型 extern 作用域及生命期

extern 存储类型通常用于的地方,都是全局存在 全局可见(因为是跨文件访问变量,所以变量处于最外层的大结构中)。
例:
[root@localhost ~]#more test.c
#include “stdio.h”
#include “test1.c”
int a1;
int a2;
int c();
int main(){
int d=0;
printf(“请输入 a1,a2\n”);
scanf(“%d,%d”,&a1,&a2);
d=c();
printf(“d=c() :%d\n”,d);
return 1;
}
[root@localhost ~]#more test1.c
extern int a1;
extern int a2;
int c()
{
return a1*a2;
}


运行结果:
[root@localhost ~]#gcc test.c -o t
[root@localhost ~]#./t
请输入 a1,a2
8,9
d=c() :72