void foo()
{
static int x = 5;
x++;
printf("%d", x);
}
int main()
{
foo();
foo();
return 0;
}
发布于 2018-05-03 14:48:08
这里有两个问题,生命周期和范围。
变量的作用域是可以看到变量名的地方。在这里,x只在函数foo()中可见。
变量的生存期是它存在的时间,如果x是在没有关键字静态的情况下定义的,那么它的生存期将从foo()的条目到foo()的返回;所以每次调用时都会将它重新初始化为5。
关键字静态的作用是将变量的生存期延长到程序的生存期;例如,初始化只进行一次和一次,然后在以后对foo()的所有调用中,变量保留其值--不管它是什么。
发布于 2018-05-03 15:06:35
输出:6 7
void foo()
{
static int x = 5; // assigns value of 5 only once
x++;
printf("%d", x);
}
int main()
{
foo();// x = 6
foo();// x = 7
return 0;
}
https://stackoverflow.com/questions/-100004010
复制相似问题