查资料,静态变量不赋初始值,就得0.我想调试,看下静态变量aaaaaa的值是不是得0,但是调试结果显示,没有这个变量值,奇怪了
是因为编译器的问题,我的编译器(VS2010)也存在这个问题,原因的话,可以看我下面加的链接,我认为里面里面的诸位大神说的很对
关于VC6.0静态变量无法查看的原因
如果编译过程中实在想看静态变量的值,也可向定义一个指针指向想要查看的静态变量,然后再查看静态变量就可以了,测试代码和测试截图如下
#include<iostream>
using namespace std;
int main()
{
static char a;
char *c=&a;
return 0;
}
0应该是0
#include <stdio.h>
int main()
{
static int aaaa;
printf("%d\n", aaaa);
return 0;
}
但是调试器没找到aaaa,比较奇怪,你把鼠标光标指向aaaa,看看有没有变量的值,或者选择int static aaaa;右键,添加到监视(add to watch)看看。
代码 应该没有问题,在linux上调试是0,是不是你的调试环境有问题,或者直接打印输出那个值就可以了。
把 static int aaaa;放在main上面 声明;不要放里面
因为你用的是c++编译器,而非C编译器,在静态变量这块C和C++是不同的,C语言的全局和静态变量,不管是否被初始化,其内存空间都是全局的。而C++标准规定:全局或静态对象当且仅当对象首次用到时才进行构造,因此你没使用这个变量,或者给它赋值,那么就没有分配相应的内存地址,因此调试时看不到。