请问:a是extern 还是static的

bin00 2003-10-16 11:13:03
我在文件的开头,函数的外面写
int a;

请问:a是extern 还是static的
...全文
21 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunjx119 2003-11-01
  • 打赏
  • 举报
回复
static
l 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可改变其值。

2 静态变量或静态函数,即只有本文件内的代码才可访问它,它的名字(变量名或函数名)在其它文件中不可见。

extern
l 声明变量或函数为外部链接,即该变量或函数名在其它文件中可见。被其修饰的变量(外部变量)是静态分配空间的,即程序开始时分配,结束时释放。用其声明的变量或函数应该在别的文件或同一文件的其它地方定义(实现)。在文件内声明一个变量或函数默认为可被外部使用。
luhuayi 2003-11-01
  • 打赏
  • 举报
回复
默认是EXTERN
yaoxinyan 2003-11-01
  • 打赏
  • 举报
回复
在C++里,
int a;
相当于:
int a=0;
很明显,a的linkage是external的。

在C里,
int a;
是暂时定义,由于不可能在其它地方再出现下面的语句:
static int a;
所以a的linkage同样是external的。
不过我们可以在同一文件多写几次:
int a;
int a;
int a=1;
当然,其中只能有一个含初始化部分。
teddyzhai 2003-10-31
  • 打赏
  • 举报
回复
我的认为EXTERN 只是申明,而STATIC有点申明加付初植了
litant919 2003-10-31
  • 打赏
  • 举报
回复
a存储在静态数据区中,但不能说是extern还是static,
williamVII 2003-10-16
  • 打赏
  • 举报
回复
C中默认为extern,
C++中为static.
Weigehoho 2003-10-16
  • 打赏
  • 举报
回复
同意楼上的
liem 2003-10-16
  • 打赏
  • 举报
回复
在函数外定义的变量,其默认的存储类别为extern。就象我们定义的函数是extern 一样。
zhumerchant 2003-10-16
  • 打赏
  • 举报
回复
当然是extern了,默认的
有static修饰的变量才是静态变量
daizh 2003-10-16
  • 打赏
  • 举报
回复
a对于其他文件来说是extern,可以通过extern a;来调用。它不是static,要它是static必须这样定义:static int a;
smans 2003-10-16
  • 打赏
  • 举报
回复
it is extern.
houdy 2003-10-16
  • 打赏
  • 举报
回复
要注意区分定义和声明:你可以在一个文件中定义一个全局变量int a=0;(不用赋值也可以,全局变量默认赋值0)。如果你在另一个文件中需要使用这个变量,你要在文件前面这样声明:
extern int;编译看这个声明,就认为这个变量在某个地方定义了,当用到这个变量的时候,到那个地方找就是了,如果没有用extern 这个关键子,可能会出现重复定义或找不到定义的情况的。
static其中的一个作用就是,当你声明一个变量或函数是static的时候,他只在这个文件中有效,也就是说他有"file scope".在其他的文件中无效。当然static 还有其他的作用。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧