C语言笔记-函数-存储期和作用域

 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\n",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
  ---------

 

posted @ 2016-04-03 10:18  小样和牛牛  阅读(182)  评论(0编辑  收藏  举报