静态存储期限
来自 cppreference.com
如果一个对象的标识符在声明时没有使用存储类说明符 _Thread_local,并且具有外部或内部 链接 或使用存储类说明符 static,则该对象具有静态存储期限。它的生命周期是整个程序的执行时间,其存储的值只初始化一次,在程序启动之前。
[编辑] 注意
由于其存储的值只初始化一次,所以具有静态存储期限的对象可以用于分析函数的调用次数。
关键字 static 的另一个用途是 文件作用域。
[编辑] 示例
运行此代码
#include <stdio.h> void f (void) { static int count = 0; // static variable int i = 0; // automatic variable printf("%d %d\n", i++, count++); } int main(void) { for (int ndx=0; ndx<10; ++ndx) f(); }
输出
0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9