[b]外部变量[/b]顾名思义就是定义在函数之外的变量。
它只能定义一次,定义后编译程序将为它分配存储单元。
如果需要访问外部变量,则必须声明相应的外部变量,声明时可以用[b]extern[/b]语句[b]显示声明[/b],也可以通过上下文来[b]隐式声明[/b]。
比如:
这是显示声明。
当然,在某些情况下extern声明是可以省略的,即隐式声明。什么时候可以省略呢?要满足两个条件,1个是外部变量的定义和调用者在同一个源文件内,2是外部变量的定义出现在使用它的函数之前,满足上面两个条件就可以省略。
所以第一个例子中的extern声明可以省略。写成下面这样:
语法上没有问题,但下面这样就不能编译通过了:
要把注释拿掉才行,顺便说一句,如果max未显示的初始化,那么将[b]默认被初始化为0[/b]
它只能定义一次,定义后编译程序将为它分配存储单元。
如果需要访问外部变量,则必须声明相应的外部变量,声明时可以用[b]extern[/b]语句[b]显示声明[/b],也可以通过上下文来[b]隐式声明[/b]。
比如:
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未显示的初始化,那么将[b]默认被初始化为0[/b]