注册 登录
编程论坛 新人交流区

全局变量的问题 ?

Cking 发布于 2007-10-15 22:48, 391 次点击
int a=1,b=2;///???????
max(inta ,int b)
{
int c;
c=a>b?a:b;
return(c);
}
main()
{
int a =8;
printf("%d",max(a,b));
}

如果把第1行改成:
extern int a=1,b=2;
有没有区别?我知道statci int a=1;,但是不知道这个区别。
谢谢啊!
6 回复
#2
缘吇弹2007-10-15 23:13
int a=1,b=2; //在本文件内使用

extern int a=1,b=2; //可以被外部的文件引用

#3
福尔摩斯2007-10-15 23:18
在C++中

如果外部定义了变量,主函数体内再定义一个相同的变量

那么在主函数中,新定义的变量完全取代全局变量
#4
Cking2007-10-16 21:51
以下是引用缘吇弹在2007-10-15 23:13:02的发言:
int a=1,b=2; //在本文件内使用

这个不是和 static int a=1,b=2;一样吗?

#5
Cy_Chance2007-10-17 19:23

这里涉及到的是数据的存储类型:
在C语言中数据的存储类型有四种:auto register extern statci
auto 自动型 通常省略。。。即我们参说明的数据 int a 等 是省略auto 的数据说明;
register 寄存器型 如果把变量说明为寄存器类型,那么是把他存储到寄存器中,这样比操作内存快的多。
extern 外部参照型 用于多个编译单位之间传递数据,如果要实现跨文件数据访问则必须声明为 extern,还有extern 存 储在静态数据区中的,在程序执行过程中,一直占用着空间
static 静态型

在这里extern 和static 没有区别!

#6
Cy_Chance2007-10-17 19:24
汗水,回复后才发现。。。。几个月前的帖子。。。。伤心
#7
zzhang08212007-10-17 20:33
一样的想法
1