随便问问, 全局变量和静态全局变量有何不同?它们所处的内存不同吗?

wt13 2002-05-13 02:37:54
够简单吧, 给30分
...全文
45 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jackstraw 2002-05-13
  • 打赏
  • 举报
回复
静态局部变量在调用完毕后不销毁其值,下次调用依然可以访问到这个值,但是在定义它的函数外面不能访问
wyylbl 2002-05-13
  • 打赏
  • 举报
回复
静态全局变量是把全局变量局部化
对多文件程序而言,全局变量可以在整个程序包含的所有文件中使用,而静态全局变量只能在定义它的文件中使用,在其他文件中不可见
liem 2002-05-13
  • 打赏
  • 举报
回复
全局变量具有外部连接性(其它编译单元可见),全局静态变量不具有外部连接性(其它编译单元不可见)。
Bird008 2002-05-13
  • 打赏
  • 举报
回复
他可以在整个编译的工程中都保持住值,作用范围是整个工程。
hiphop 2002-05-13
  • 打赏
  • 举报
回复
作用个范围不一样~
rivershan 2002-05-13
  • 打赏
  • 举报
回复
看看~
sum_1 2002-05-13
  • 打赏
  • 举报
回复
我认为定义全局变量的初衷是要让所有的地方(编译单元)都能使用它,这样就避免了函数中参数传递所用的时间.
晨星 2002-05-13
  • 打赏
  • 举报
回复
int i;

void f1()
{
static j;
}

void f2()
{
i = 5; //Legal
j = 5; //Illegal
}
benjiamen 2002-05-13
  • 打赏
  • 举报
回复
VIPER() 说得对

如果在单个源文件中,全局变量与静态全局变量没有什么区别。但是在多文件组成的程序里,全局变量与静态全局变量是不同的,全局变量可以在其它源文件中使用,而静态全局变量只能在定义该变量的源文件所独享。


wt13 2002-05-13
  • 打赏
  • 举报
回复
To viper()

您所说的编译单元指什么?是不是指声明变量的文件。
那你的意思是说在a.cpp的文件中生命的static int iA;
在b.cpp使用extern int iA是不行的?
kof99th 2002-05-13
  • 打赏
  • 举报
回复
楼上的已经说的很清楚了,全局变量可以在所有编译单元中被访问,静态全局变量只能在定义他的编译单元被访问.
prototype 2002-05-13
  • 打赏
  • 举报
回复
全局变量 can be used by functions distributed in different files (or translation unit, more strictly speacking), while 静态全局变量 can't (they can only be used by functions defined in the same file).
招RD和QA 2002-05-13
  • 打赏
  • 举报
回复
全局变量范围是全局的,任何编译单元里都是可见的。
静态全局变量只有在定义它的编译单元里才可见。
lutf 2002-05-13
  • 打赏
  • 举报
回复
这其实是一个概念,都在全局存储区(数据段)
如果要比较,应该是全局变量和静态局部变量的比较,这两者其实差别不大(定义的地方不同),都属于全局存储。

69,371

社区成员

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

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