C语言中的Extern用法

(2010-07-28 12:50:39)

标签:

杂谈

分类:

技术

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

分享:

喜欢

0

赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

c语言中extern变量,C语言中的Extern用法相关推荐

  1. c语言中static变量

    c语言中static变量 2009-06-30 20:33:24|  分类:默认分类 |  标签:|字号大中小 订阅 static静态变量声明符. 在声明它的程序块,子程序块或函数内部有效,值保持,在 ...

  2. c语言中在main外面定义的int变量,C语言中,把变量定义在主函数之外和定义在主函数之内有什么区别...

    C语言中,把变量定义在主函数之外和定义在主函数之内有什么区别 答案:7  信息版本:手机版 解决时间 2018-12-14 06:44 已解决 2018-12-13 14:23 C语言中,把变量定义在 ...

  3. C语言 SLEEP函数不起作用,C语言中的sleep() 函数 sleep函数的具体用法

    导航:网站首页 > C语言中的sleep() 函数 sleep函数的具体用法 C语言中的sleep() 函数 sleep函数的具体用法 相关问题: 匿名网友: 关于sleep()函数在windo ...

  4. c语言中rand()的作用,c语言中rand()函数怎么用? rand函数的用法

    导航:网站首页 > c语言中rand()函数怎么用? rand函数的用法 c语言中rand()函数怎么用? rand函数的用法 相关问题: 匿名网友: rand(产生随机数) 相关函数 sran ...

  5. java语言和c语言_java语言和c语言的区别

    java语言和c语言的区别 java语言和c语言作为编程的两大语言,它们之间存在什么样的区别呢?下面百分网小编就为大家讲一讲,希望对您有所帮助! C语言是一门通用计算机编程语言,应用广泛.C语言的设计 ...

  6. php实现下单成功提示语,推荐10款提示语源码(收藏)汇总

    下面小编就为大家带来一篇h5输入框提示语 + 正常文本框提示语的实现方法.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧XML/HTML Code复制内容到剪贴板plac ...

  7. c语言 extern_Visual C++ 6.0环境中C语言extern 变量使用过程报错

    extern 变量称为外部存储变量.extern声明了程序中将要用到但尚未定义的外部变量.本次错误的解决方法同样适用于外部函数.外部函数就是可以被其他源文件调用的函数,定义外部函数时使用extern进 ...

  8. 欧洲语言学习统一标准C1C2音频,北京通州区有没有西班牙语培训班(为何选择西班牙语)...

    北京通州区有没有西班牙语培训班,选择北京西班牙语培训则是正确的抉择,西班牙语等级如何划分,选择西班牙语好吗,西语跟德语哪个难,少儿学西班牙语有什么优势,孩子学西班牙语启蒙好学吗,如何零基础入门西班牙语 ...

  9. 西班牙语dele等级_西班牙语DELE不同等级是什么水平?

    我们所说的西班牙语Dele考试,全名是<对外西班牙语水平证书(Diplomas de Español Como Lengua Extranjera>, 是塞万提斯学院以西班牙教育科学部的名 ...

最新文章

  1. ecs和eks 比较_如何使用Kubernetes,EKS和NGINX为网站设置DNS
  2. MySQL Fabric 套件,提供自动故障检测和故障转移
  3. 不用额外变量交换两个整数的值
  4. SAP的号码范围(number range)SNRO和SNUM自动编号工具的用法
  5. JQuery 自动触发事件
  6. 现任明教教主CCNA Security作业汇总
  7. 深度学习系统相比较传统的机器学习系统,针对常见的分类问题,精度究竟能有多大提升?...
  8. Android之开源视频压缩框架RxFFmpeg的commands设置
  9. eplan如何导入access_EPLAN如何助力汽车行业的智能制造转型?
  10. 新时代、新挑战、新机遇
  11. thinkphp5 mysql加1_ThinkPHP5.1的数据库链接和增删改查
  12. 易优CMS:arcview的基础用法
  13. WLAN 与WIFI的区别?
  14. hls协议视频(.m3u8)在浏览器播放
  15. 手机通讯终端软件硬件测试,浅谈基于SWP方案的近场通信终端测试及其方法探究...
  16. 安信可SX1278LORA通讯试验
  17. 3译码器与半加器的学习
  18. SQL报错及解决方法(随缘更新)
  19. ORBSLAM源码理论分析2—单目初始化
  20. 前端(刚刚开始自学)-html

热门文章

  1. wireshark实战之捣乱的ISAKMP协议
  2. Git创建本地分支并拉取远程分支
  3. 一刻相册全/批量下载相册到电脑
  4. metersphere使用js刷新当前页面
  5. 美国防止儿童开启包装测试US 16 CFR 1700.20,CR包装认证解析
  6. 微信小程序(八)我的界面
  7. 格瑞吉奥congrazio 2012秋冬新品 男士新款撞色条连帽卫衣外套 811813002 3005活性黑 M 【图片 价格 品牌 报价】...
  8. TexLive安装报错does not map to cp936
  9. Java--Java三大版本 JDK 和 JRE
  10. ionic实现搜索框过滤关键字高亮