C语言中extern的用法

C语言中的Extern用法
网上有很多帖子问C语言中Extern的用法,而且回答的详细程度各尽不同. 所以我就像写一篇博文来谈谈我对extern的看法,不一定十分恰当,只当大家共勉.
在具体到Extern的用法之前,有两个概念必须要能分清楚:声明(Declaration)和定义(Definition)之间的区别. 声明一个变量只是宣布这个变量的属性,也就是说告诉编译器这个变量时什么类型(如int, long, string 等). 而定义一个变量不仅是声明了变量的属性,同时也告诉编译器给变量分配相应的存储空间. 例如:
//test.c
int value; //定义一个变量名为value,并分配相应存储空间
double arr[MAX_INTEGER];//定义数组变量名为arr,并分配相应的存储空间
extern int value1;//声明变量名为value1且这个变量在其他文件中定义的,没有分配存储空间
extern double arr1[MAX_INTEGER]//…同上
int main(){
….
}
理解了声明和定义的区别以后,我们开始进入今天的主题Extern的用法, 首先我们看看Extern修饰符的作用是什么? Extern作用其实很简单,就是允许你程序的一个模块调用另外一个模块里定义的全局变量或函数. 这话听起来有点拗口,简单点就是你在一个A.cpp文件里面定义了一个全局变量X,但是你B.cpp想引用这个X,这时用Extern修饰符就能办到了. 通常情况下你会把这个全局变量定义在头文件里.这样可能性更强些.
Extern 适用于变量和函数
下面我们就看个例子,这个例子记得有人写过,但是,我觉得他写的测试例子不太合适,所以就重写一下。
//Create a ext.h
Extern int value;
//create a ext.cpp
#include “stdio.h”
#include “ext.h”
Int value = 5;
Void printExt(){
Printf(“ext %d\n”, value);
}
//create test.cpp
#include “stdio.h”
#include “ext.h”
Extern void printExt();
int main(void){
value =3
printf(“\n test %d\n”,value);
printExt();
printf(“\n test %d\n”, value)
}
打印出来的结果,大家应该都能猜到是:
Test 3
Ext 3
Test 3


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值