读书人

大局静态变量和全局变量的区别

发布时间: 2013-03-27 11:22:42 作者: rapoo

全局静态变量和全局变量的区别
全局静态变量和全局变量有什么区别呢,在一个大牛的blog中看到全局静态变量说静态全局变量不能被其它文件所用,我上机试了下,应该没有啊,各位怎么看。
什么分配区域不一样,初始化为零之类的就不要说了,谢谢大家了~
[解决办法]


class A
{
public int _num;
public static int _static_num;
}

上面是一样的效果。
其实我也不知道你问的什么意思。
[解决办法]
能把你的代码贴出来吗?
静态全局变量的作用域为本编译文件,是不能为其他的文件extern 引用啊
[解决办法]
没错的,静态全局变量不能被其他文件使用。
//1.cpp
#include<stdio.h>
static int qj;//去掉static可被2.cpp使用
int main()
{
extern void f();
qj=3;
printf("%d",qj);
f();
printf("%d",qj);
return 0;
}

//2.cpp
extern int qj;
void f()
{
qj=6;
}

[解决办法]
肯定是这样的。

原因是:静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效。

引用:
没错的,静态全局变量不能被其他文件使用。
//1.cpp
C/C++ code?1234567891011#include<stdio.h>static int qj;//去掉static可被2.cpp使用int main(){ extern void f(); qj=3; printf("%d",qj); f(); printf("%d……

[解决办法]
全局静态变量和全局变量二者区别在“静态二字”。
静态全局变量有以下特点:
该变量在全局数据区分配内存;
未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0);
静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的。
[解决办法]
引用:
能把你的代码贴出来吗?
静态全局变量的作用域为本编译文件,是不能为其他的文件extern 引用啊


恩。
[解决办法]
C和C++在static的处理上机制不同

所以在测试的时候需要显示指定是C编译器还是C++编译器

读书人网 >C++

热点推荐