extern 只是申明,起了提示编译器作用,告诉变量可能在其他文件中定义,当然包括本文件,并非严格的非本文件。关键要理解“申明”的含义。
extern 表示在其他文件定义,在此处声明
就是说这个变量的地址早在其他文件就定下来了,
extern int a;
a=8;
这样执行后,这个a的值我论在哪里看都已经变成8了。
声明的概念就是,已经定义好的变量,这里了要用到,提示它的存在而已。
定义成extern的变量是全局变量,对于一个exe文件来说,就可以在任意一个函数里面来访问这个变量,会被放到全局的数据区域里面。
比如A.c文件定义了一个外部连接性的变量int a; 在b文件中声明extern int a意思的引用其他文件中的int a变量。a文件中的int叫做定义声明,b文件中的extern int a叫做引用定义声明。