大局静态变量和全局变量的区别
全局静态变量和全局变量的区别全局静态变量和全局变量有什么区别呢,在一个大牛的blog中看到全局静态变量说
全局静态变量和全局变量的区别
全局静态变量和全局变量有什么区别呢,在一个大牛的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;
}
[解决办法]肯定是这样的。
原因是:静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效。
[解决办法]全局静态变量和全局变量二者区别在“静态二字”。
静态全局变量有以下特点:
该变量在全局数据区分配内存;
未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0);
静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的。
[解决办法]恩。
[解决办法]C和C++在static的处理上机制不同
所以在测试的时候需要显示指定是C编译器还是C++编译器