C++ Primer 说
每个局部静态变量在第一次执行通过对象的定义之前被初始化。当函数结束时,局部静态不会被破坏;它们在程序终止时被销毁。
局部静态变量与全局静态变量有什么不同吗?除了声明它们的位置之外,还有什么不同?
void foo () {
static int x = 0;
++x;
cout << x << endl;
}
int main (int argc, char const *argv[]) {
foo(); // 1
foo(); // 2
foo(); // 3
return 0;
}
与之比较
static int x = 0;
void foo () {
++x;
cout << x << endl;
}
int main (int argc, char const *argv[]) {
foo(); // 1
foo(); // 2
foo(); // 3
return 0;
}