黑马程序员技术交流社区

标题: 外部变量的问题 [打印本页]

作者: Ye•Ye    时间: 2014-5-7 16:01
标题: 外部变量的问题
本帖最后由 Ye•Ye 于 2014-5-13 09:36 编辑

extern着关键字是用来声明一个外部变量,那么:

extern int a;
main()
{......}

int a;

这是啥意思?底下那个a是外部变量吗?这样写有什么用啊?

作者: tripleCC    时间: 2014-5-7 18:50
首先不考虑你这样写的目的(不知道这样写准备干吗。。。),
int    a;a是强符号类型
extern int a;a是弱符号类型
c语言允许存在一个强符号和多个弱符号,
但是定义会选择强符号,
假如楼主在int a;后面还有对a的引用的话,那么后面的a不是外部变量也就是2。
如果在main中引用a,这个a是外部变量,也就是1。
后面那个a的作用域不包括main,只影响他定义位置后面的相关语句。。。
作者: 为梦想挺身而出    时间: 2014-5-9 23:37
首先 int a; 写在最下面,main函数无法检测到
extern int a; 的意思是声明一个外部变量a
默认情况下所有变量都是外部变量
所以extern可以省略
上面的extern int a; 就是起到了声明下面int a;的作用
作者: 流心语    时间: 2014-5-10 17:32
默认情况下下C语言中定义的全局变量都是外部变量。
外部变量的完整定义是: extern 变量类型  变量名;
但由于默认情况下,所有的全局变量都是外部变量,所以通常情况下省略关键字extern。
所以 extern int a;等价于  int a;
在c语言中,外部变量可以声明多次,只要外部变量的名称一样,系统都会认为是同一个变量,在内存中占用同一块空间。所以上面的a和下面的a是同一个a。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2