欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

C语言学习随记:extern关键字

时间:2023-04-30
extern关键字

利用extern关键字可以在一个文件中引用另一个文件中的全局变量或函数;
1、引用同一文件中变量

#include void func();int mian() {func();printf("%dn",num);return 0;}int num = 2;void func() {printf("%dn", num);}

例如上面的代码,num在main函数之后定义,所以在 printf("%dn",num);处会提示num是没有声明的变量;但是func函数中的引用去可以,这是因为func函数对num的调用实在声明完num变量之后的操作。
如果不想改变num声明的位置,此时我们可以利用extern关键字(如下)。

#include void func();int mian() {func();extern int num;printf("%dn",num);return 0;}int num = 2;void func() {printf("%dn", num);}

利用extern关键字事先声明num变量,告诉程序num变量确实存在,虽然不在这之前声明,但可以在别的地方找到。

2、引用另一个文件中的变量
main.c

#include int main() {extern int num;num = 5;printf("%dn",num);}

demo02.c

#include int num = 2;void func() {printf("demo02.c");}

如上所述,在demo02.c文件中定义的全局变量通过extern关键字在mian.c文件中进行引用。特别注意,因为num是全局变量,所以在另一个文件中才会引用成功。如果他是局部变量则不会。
还有一点:extern只用指明类型和变量名,而不能赋初值。只有当声明完成后才可以赋初值。

extern int num = 5;//不可行

extern int num;//可行num = 5;

若此变量不希望被修改可以引用const关键字,如下:

extern const int num;

若只想引用另一个文件中的个别变量可以采用此方法。
若使用include头文件把整个文件包含进去,则会造成安全隐患。

3、引用另一个文件中的函数
main.c

#include int main() {extern const int num;extern void func();func();printf("main.c num:%dn",num);}

demo02.c

#include int num = 2;void func() {printf("demo02.c num:%dn",num);}

运行结果:

在main函数中引用了demo02.c文件中的函数func(); 函数都是全局的,所以extern的修饰方法与修饰全局变量时相同。指明函数的返回值的类型和参数。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。