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

extern关键字

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

#include <stdio.h>
void func();

int mian() {
	func();
	printf("%d\n",num);
	return 0;
}

int num = 2;

void func() {
	printf("%d\n", num);
}

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

#include <stdio.h>
void func();

int mian() {
	func();
	extern int num;
	printf("%d\n",num);
	return 0;
}

int num = 2;

void func() {
	printf("%d\n", num);
}

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

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

#include <stdio.h>
int main() {
	extern int num;
	num = 5;
	printf("%d\n",num);
}

demo02.c

#include <stdio.h>

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 <stdio.h>
int main() {
	extern const int num;
	extern void func();
	func();
	printf("main.c num:%d\n",num);
}

demo02.c

#include <stdio.h>

int num = 2;
void func() {
	printf("demo02.c num:%d\n",num);
}

运行结果:
在这里插入图片描述
在main函数中引用了demo02.c文件中的函数func(); 函数都是全局的,所以extern的修饰方法与修饰全局变量时相同。指明函数的返回值的类型和参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值