关于静态变量的问题
JAVA3 2002-12-09 06:13:05 #include "stdafx.h"
#include "iostream.h"
fun()
{
static int j = 0;
cout << j;
j++;
}
int main(int argc, char* argv[])
{
fun();
fun();
return 0;
}
按理说静态变量是固定地址存在,大家都可以来使用。而且前面更改的值他会保留下来。
这段程序连续两次调用函数,第一次调用进行到static int j = 0;时,应该是初始化静态变量j为0,然后j变为1。
问题是第二次调用的时候,执行到static int j = 0;时,那这句话会不会执行呢,如果执行的话,那就是把静态变量又变回0,然后输出结果还是0。可是程序输出结果却是1。说明这句程序并没有执行初始化。直接运行cout << j;。难道可以跳过那句话吗?不解!!!
如果执行的话,是不是有另外分配一块内存,可是对于cout<<j,他到底是取那块内存的数据呢??