1 #include<stdio.h>
2 #include<stdlib.h>
3 static int a=2018;
4 static void func(void)
5 {
6 static int b;
7 printf ("a=%d,b=%d\n",a++,++b);
8 }
9 int main()
10 {
11 func();
12 func();
13 func();
14 return 0;
15 }
输出如下
a=2018,b=1
a=2019,b=2
a=2020,b=3
如果一个变量加了static的话,就会在全局数据区存储,如果不对他初始化的话,编译器就会对他自动进行赋值为0。加了static的话,这个变量的作用域就是整个程序,也就是说这个b在func这个函数结束的时候,不会对把b这个变量释放掉,因为普通的变量在函数里面申请了空间,在函数结束的时候就会自动释放掉。