全局变量和静态全局变量有什么区别?

它们都是在C++文件的开始被创建,结束被销毁.
为什么还分静态不静态?

全局变量和静态全局变量的区别在于作用域不同

就是说一个项目里如果有多个源程序文件
非静态全局变量可以在所有源文件里调用
静态全局变量只能在本文件里调用,不允许在其他文件里调用

//file1.cpp

static int a;//只能在file1.cpp里使用
int b; //可以在file2.cpp里使用
extern int c; //file2.cpp里的c

int main(void)
{
a = 1;
b = 2;
}

//file2.cpp

static int a;//只能在file2.cpp里使用
int c; //可以在file1.cpp里使用
extern int b; //file1.cpp里的b

int fun(void)
{
c = a + b;
}

在多文件的项目开发中这样可以避免由于变量重名造成的冲突

参考资料:原创

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-09
在单文件的程序中是看不出什么来,如果有多个CPP文件,效果就看出来了,全局的变量可以惯穿所有的CPP文件,而静态成员变量只能在单个CPP文件中。
如果有不明白加我百度HI
第2个回答  2009-08-09
static 数据类型用来给变量创建永久存储空间.静态变量在函数间调用时保持他们的值不变.当用在一个类中时,所有要用到静态变量的时候这个类将把这个变量镜像过去.
第3个回答  2009-08-09
静态全局变量只能在它被声明的文件中使用,不能跨文件引用
第4个回答  2009-08-09
全局变量前面有没有static表明该变量是否具有外部链接,1-3楼说的很清楚了
tatng803397说的情况是类,结构或者函数内部的static变量
相似回答