static 局部变量 · 只初始化一次 · 跨调用保留值

作用域仍是局部,但生命周期 = 整个程序;它住在静态存储区,不随函数返回而消亡
计数器函数 int counter() { static int count = 0; count = count + 1; return count; } ↑ 初始化只在第一次调用时执行一次 int main() { cout << counter(); // ? cout << counter(); // ? cout << counter(); // ? 每次调用 静态存储区(程序全程存在,只有一份) count 0 活到程序结束 跨调用保留 → 栈(每次调用新建一个帧,返回即销毁) 第 1 次调用 · counter() 的栈帧 返回地址 / 局部 return ? 帧随 return 一起消失 读同一个count 并 +1