`
clouisandy
  • 浏览: 19781 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

外部变量与extern

阅读更多
外部变量顾名思义就是定义在函数之外的变量。
它只能定义一次,定义后编译程序将为它分配存储单元。
如果需要访问外部变量,则必须声明相应的外部变量,声明时可以用extern语句显示声明,也可以通过上下文来隐式声明
比如:

int max=5;

main()
{
  extern int max;
  printf("%d",max);
}


这是显示声明。
当然,在某些情况下extern声明是可以省略的,即隐式声明。什么时候可以省略呢?要满足两个条件,1个是外部变量的定义和调用者在同一个源文件内,2是外部变量的定义出现在使用它的函数之前,满足上面两个条件就可以省略。
所以第一个例子中的extern声明可以省略。写成下面这样:
int max=5;

main()
{
  //extern int max;

  printf("%d",max);
}


语法上没有问题,但下面这样就不能编译通过了:

main()
{
  //extern int max;

  printf("%d",max);
}

int max=5;


要把注释拿掉才行,顺便说一句,如果max未显示的初始化,那么将默认被初始化为0
分享到:
评论

相关推荐

    c代码-用extern声明外部变量

    c代码-用extern声明外部变量

    C语言讲义.doc

    3.1.6 外部变量与extern关键字 66 3.1.7 全局函数和静态函数 66 3.2 内存四区 66 3.2.1 代码区 67 3.2.2 静态区 67 3.2.3 栈区 67 3.2.4 栈溢出 68 3.2.5 堆区 68 3.3 堆的分配和释放 70 3.3.1 malloc 70 3.3.2 free...

    c中static用法

    C语言程序可以看成由一系列外部对象构成,这些外部对象可能是变量或函数。...件中定义一次,而其它文件可以通过extern声明来访问它(定义外部变量或函数的源文件中也可以包含对该外部 变量的extern声明)。

    外部变量和共用体

    外部变量和共用体

    union变量的外部调用方法,亲测编译通过

    union变量在多个函数调用时涉及到变量定义及外部声明的问题,该文档所述该类型变量的声明和调用已在亲测编译通过,希望对大家有所帮助

    C语言基础知识点解析(extern,static,typedef,const)

    在一个源程序的所有源文件中,一个外部变量只能在某个文件中定义一次,而其他文件可以通过extern声明来访问它(定义外部变量的源文件中也可以包含对该外部变量的extern声明)。外部变量的定义中必须指定数组的长度,...

    深入理解extern用法

    l声明extern关键字的全局变量和函数可以使得它们能够跨文件被访问。 我们一般把所有的全局变量和全局函数的实现都放在一个*.cpp文件里面,然后用一个同名的*.h文件包含所有的函数和变量的声明。如:如果将Demo.cpp写...

    C语言、变量和函数的作用域与生存期

    详细介绍了C语言中 函数和变量的作用域 和生存期 他们的各种使用情况、、 存储类型说明有四种。 auto 自动变量。 register 寄存器变量。 extern 外部变量。 static 静态变量

    extern关键字的作用.docx

    extern 是 C 和 C++ 语言中的一个关键字,它可以用来声明变量和函数作为外部变量或者函数供其它文件使用。extern 可以置于变量或者函数前,以表示这个变量或函数定义在别的文件中,提示编译器在遇到此变量或函数的...

    static,extern,全局变量的引用(c_c++)

    讲述了static,extern及全局变量的用法,通过实例讲解,上机运行通过,放心使用

    第4章 变量的存储类型

    4.1 概述 4.2 自动型变量[auto] 4.3 寄存器型变量[register] 4.4 外部参照型变量[extern] 4.5 静态型变量[static] 4.6 存储类型小结

    [面试/笔试系列9]C/C++经典面试题

    面试题1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明...如外部变量。 面试题2:写出bool 、int、 float、指针变量与“零值”比较的if 语句

    C语言程序设计标准教程

    在主函数中输入n值,并作为实参,在调用时传送给s 函数的形参量n( 注意,本例的形参变量和实参变量的标识符都为n, 但这是两个不同的量,各自的作用域不同)。 在主函数中用printf 语句输出一次n值,这个n值是实参n的...

    C语言全书word版CHAR08

    8 函 数 1 8.1 概述 1 8.2 函数定义的一般形式 3 8.3 函数的参数和函数的值 4 8.3.1 形式参数和实际参数 4 8.3.2 函数的返回值 5 8.4 函数的调用 6 8.4.1 函数调用的一般形式 6 ...8.9.5 用extern声明外部变量 23

    50个C、C++面试题

    面试题 1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明, 但是只在一个地方定义。加入 extern修饰的是变量的声明,说明此变量...如外部变量。

    C、C++面试题.pdf

    面试题 面试题1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明, 但是只在一个地方定义。加入extern修饰的是变量的声明,...如外部变量。

    深入理解C语言 static、extern与指针函数

    1.exit(0)正常退出程序 ... 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽

    基于LTC1298或MCP3202 的12位AD的底层函数

    可用于C语言编写的程序,在C程序的开头先声明一个外部函数: extern unsigned int adcInput(bit chanSelect); 之后在程序便可直接调用。例如: static int pdata adiBuf_A[5]; // 静态变量 static int pdata ...

Global site tag (gtag.js) - Google Analytics