静态全局变量与静态局部变量都只能被定义一次
在函数内部,优先使用静态局部变量
在函数内部,优先使用静态局部变量
static int j; void fun1() { static int i = 0; i++; printf ("%d ",i); } void fun2() {
// 如果这里是 j = 0 的话,结果将为 1 ,因为这只是一个赋值操作
static j = 0;j++; } int main() { int k; for (k = 0; k < 10; k++) { fun1();
fun2(); } printf ("\n%d\n",j); return 0; }
此时结果为:
1 2 3 4 5 6 7 8 9 10
0
因为静态全局变量j并没有赋初值,它的默认初始值为0,而在fun2函数内部定义的,并不会改变静态全局变量的值。