在程序执行前系统就为之静态分配了存储空间的变量,只初始化一次。用static修饰,无显式初始化时默认为0,生命周期贯穿整个运行时间,即整个程序完全结束。 静态全局变量作用域在当前文件,非静态全局变量可通过extern在当前文件外访问.
静态变量存储在静态存储区,函数参数储存在栈中,所以静态变量不能作为形参。
#include <stdio.h>
void funccall() {
static int m = 0;
printf("%d\n", m);
m++;
}
int main(int argc, char * const argv[])
{
funccall(); // 输出0
funccall(); // 输出1
funccall(); // 输出2
return 0;
}