A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ye•Ye 中级黑马   /  2014-5-7 16:01  /  1296 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Ye•Ye 于 2014-5-13 09:36 编辑

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

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

int a;

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

3 个回复

倒序浏览
首先不考虑你这样写的目的(不知道这样写准备干吗。。。),
int    a;a是强符号类型
extern int a;a是弱符号类型
c语言允许存在一个强符号和多个弱符号,
但是定义会选择强符号,
假如楼主在int a;后面还有对a的引用的话,那么后面的a不是外部变量也就是2。
如果在main中引用a,这个a是外部变量,也就是1。
后面那个a的作用域不包括main,只影响他定义位置后面的相关语句。。。
回复 使用道具 举报
首先 int a; 写在最下面,main函数无法检测到
extern int a; 的意思是声明一个外部变量a
默认情况下所有变量都是外部变量
所以extern可以省略
上面的extern int a; 就是起到了声明下面int a;的作用
回复 使用道具 举报
默认情况下下C语言中定义的全局变量都是外部变量。
外部变量的完整定义是: extern 变量类型  变量名;
但由于默认情况下,所有的全局变量都是外部变量,所以通常情况下省略关键字extern。
所以 extern int a;等价于  int a;
在c语言中,外部变量可以声明多次,只要外部变量的名称一样,系统都会认为是同一个变量,在内存中占用同一块空间。所以上面的a和下面的a是同一个a。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马