1 #include <stdio.h> 2 int a=0; 3 /*a是文件作用域,所以fun可以调用它 4 另外a有静态存储期,意味着程序不结束,它就一直存在.*/ 5 void fun(void) 6 { 7 static int b=0; 8 /*b是块作用域.只能在fun函数内使用. 9 b有static修饰,也有了静态存储期,意味着程序不结束,它就一直存在,不会随着fun函数的结束而销毁*/ 10 int c=0; 11 /*c是块作用域,只能在fun函数内使用 12 c有自动存储期,当fun函数运行时它被创立,此时要赋值,不然可能被初始化为垃圾值 13 当fun函数运行到自己的}时候,c会被销毁.*/ 14 printf("%3d %3d %3d ",a++,b++,c++); 15 } 16 int main() 17 { 18 int i; 19 puts(" a b c"); 20 puts(" ---------"); 21 for(i=0;i<10;i++) 22 { 23 fun(); 24 } 25 puts(" ---------"); 26 return 0; 27 }
结果是:
a b c --------- 0 0 0 1 1 0 2 2 0 3 3 0 4 4 0 5 5 0 6 6 0 7 7 0 8 8 0 9 9 0 ---------