会打印出什么?6.6还是6.7?为什么?
void foo()
{
static int x = 5;
x++;
printf("%d", x);
}
int main()
{
foo();
foo();
return 0;
}
会打印出什么?6.6还是6.7?为什么?
void foo()
{
static int x = 5;
x++;
printf("%d", x);
}
int main()
{
foo();
foo();
return 0;
}
这里有两个问题,生命周期和范围.
变量的作用域是可以看到变量名称的地方.这里,x
仅在函数foo()
内可见.
变量的生存期是它存在的时间段.如果定义x
时没有关键字静电,生存期将是从进入foo()
时到从foo()
时返回;因此,每次调用都会将其重新初始化为5.
关键字static将变量的生存期延长到程序的生存期;e、 g.初始化只发生一次,然后变量保留其值——不管它是什么——在所有future 调用foo()
的过程中.