栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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的修饰方法与修饰全局变量时相同。指明函数的返回值的类型和参数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/743544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号