在c语言中代码的执行顺序是从上往下执行的,如果定义的函数或者变量在调用之后,那么调用的时候编译就会找不到需要使用的变量。这样就会出现错误,如下代码:


#include<stdio.h>int main(){printf("%d",num);function();return 0;
}int num =5;void function(){printf(" hello word main function\n");
}

执行这句代码就会出现错误,错误原因就是因为,num和funcion函数定义在main函数的下面导致main函数中执行num和function的时候编译器并没有编译到那里所有编译器就会认为没有定义num和function 函数所以会出现错误。那么我可以使用extern关键字来改正个问题。extern关键字可以 让变量全局化。

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

这样就可以正常运行了。extern 关键字还可以调用其他.c文件中的变量和函数 如下:

test_extern.c#include<stdio.h>int num =5;
int age=29;
char  name="make";void func(){printf(" 调用 test_extern函数!!\n ");
}test_main.c#include<stdio.h>int main(){extern int num ;extern int age;extern char name;extern void func();func();printf("%d\n",num);printf("%d\n",age);pirntf("%s\n",name);return 0;
}

执行上面代码就可以在test_main文件中打印出test_extern文件中的字段和方法。这样写有一个好处就是可以不用再文件中因为别的 .h头文件,因为如果引用.h头文件就可以调用.h文件中所有的函数和字段,这样不是很安全,所以如果想代用另外一个.c源文件的函数时可以使用extern关键字来调用这样提高 了函数的安全性。

总结:extern 有三种用三,在本文件中使变量全局化,调用其他源文件中的字段,调用其他源文件中的函数。

转载于:https://blog.51cto.com/14058389/2339141

c语言extern关键字详解相关推荐

  1. c语言关键字extern作用,c语言extern关键字详解

    标签: 在c语言中代码的执行顺序是从上往下执行的,如果定义的函数或者变量在调用之后,那么调用的时候编译就会找不到需要使用的变量.这样就会出现错误,如下代码: #include int main(){ ...

  2. c语言关键字extern作用,C语言中extern关键字详解

    <C语言中extern关键字详解>由会员分享,可在线阅读,更多相关<C语言中extern关键字详解(5页珍藏版)>请在人人文库网上搜索. 1.C 语言中 extern 关键字详 ...

  3. C语言const关键字详解

    C语言的const关键字 const 在实际编程中用得并不多,const 是 constant 的缩写,意思是"恒定不变的"!它是定义只读变量的关键字,或者说 const 是定义常 ...

  4. C/C++中extern关键字详解

    1 基本解释 :extern可以置于变量或者函数 前,以标示变量或者函数的定义在别的文件中 ,提示编译器遇到此变量和函数时在其他模块中寻找其定义 .此外extern也可用来进行链接指定. 也就是说ex ...

  5. C/C++中extern关键字详解与应用

    1.引言:多文件结构中,对全局变量(global variance)的体会 全局变量的好处是毋庸置疑的.方便在各个子模块和局部域中使用.所以,全局变量很适合做众多模块之间的公共交流与通信. 在单文件结 ...

  6. C/C++中extern关键字详解[zz]

    1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...

  7. C语言的关键字 详解

    一.C语言的关键字 C语言中的32个关键字及其意思如下: 由 ANSI 标准定义的C 语言关键字共32 个.根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类. 1.数据类型关键字 ...

  8. C语言保留字(关键字)详解

    保留字(reserved word) 保留字又称关键字. 指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用. 每种程序设计语言都规定了自己的一套保留字. 例如:BASIC语言规 ...

  9. 【老九学堂】【初识C语言】C语言保留字(关键字)详解

    保留字(reserved word) 保留字又称关键字. 指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用. 每种程序设计语言都规定了自己的一套保留字. 例如:BASIC语言规 ...

最新文章

  1. New beginning
  2. Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果(1)
  3. 使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题
  4. 腾讯视频app下载2019_腾讯视频主设备如何设置
  5. 0基础入门前端,会遇到哪些困难?
  6. MySql(13)—— MySQL查询行锁、解锁
  7. 变位齿轮重合度计算公式_渐开线圆柱齿轮传动的重合度计算.pdf
  8. [Java] 蓝桥杯ALGO-78 算法训练 确定元音字母位置
  9. asp.net三层架构制作新闻管理_为什么使用PHP制作网站?
  10. Exponent CMS 2.3.9 配置文件写入 Getshell分析
  11. python基本数据类型
  12. bch码原理基于matlab,BCH码编译码matlab仿真
  13. 数字化生产车间可视化管理——电子看板
  14. 做平台玩手机创造内容,微软小冰的花式包抄
  15. 联发科:心态决定未来走势
  16. NYOJ-20 吝啬的国度【深搜】
  17. EMC设计理论通俗非科班学习笔记(完结)
  18. 初中计算机表格处理教案,初中信息技术Excel教案设计
  19. HTML5+CSS3小实例:简单又好看的加载动画效果
  20. CentOS文件备份|还原

热门文章

  1. JavaScript ES 5 语法 重构 new
  2. 非平坦结构元matlab,基于MATLAB的巴特沃思型数字滤波器设计.doc
  3. 简单的php服务文件下载,php文件下载
  4. 使用Slf4j查看日志输出
  5. ZooKeeper入门(一)
  6. Springboot使用thymeleaf进行页面跳转
  7. 看看差距--完备技术面试
  8. 在P5QL上激活Windows Vista
  9. leetcode 41. First Missing Positive 1
  10. 博为峰Java技术文章 ——JavaSE Swing JPanel III