C语言关于外部变量

来源:百度知道 编辑:UC知道 时间:2024/05/17 19:19:05
USER login_user;
extern USER login_user;
这两个是不是第二行声名一个外部变量,第一行为全局变量
如果没有第一行,第二行是不是没有意义?
全局跟声名我都晕了,请高手指点

一般不把这两句放在同一个源文件里。

第一个是一个变量的定义,第二个是变量的声明。

在文件a.c中定义一个USER login_user;但是在文件b.c中要用到这个全局变量,就采用声明的方法,extern USER login_user;来告诉编译器,我需要用一个变量login_user;但是这个变量已经在别的文件中定义了——就这个意思。

声明和变量定义的关系
一般在函数调用里面
int func1(int a,int b)
{......}

int func2(......)
{
......
int x=1;
int y=2
func(x,y);
......
}

上面的x和y就是定义。而a和b就是声明。

对,第一行是定义,可以放在其他的源文件里。第二行是声名(外部连接),告诉编译器,你要使用这个变量,叫它去寻找。当然找不到就会出错。

如果源文件中的变量不想被其他的文件使用,可以声明为static type var(内部连接),这样这个变量就只能在当前文件中被访问。

不用纠缠于这些,知道怎么用就行了。