很多同学搞不懂static的作用,今天黄老师来跟大家普及一下:
首先, 在内存中,有一块独立的空间,叫静态区,专门用来存储静态static的数据。
作用一:在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
上代码最好理解了:
- #include
-
- void f1(int i)
-
- {
- static int a = i++; //只执行一次,因为静态变量只执行一次
- printf("%d\n",a);
- }
-
-
-
- void f2()
- {
- static int b = 1; //只执行一次
- printf("%d\n", b++);//保留上一次的值
- }
-
-
-
- int main(int argc, char* argv[])
- {
- f1(1);
- f1(2);
- f1(3);
-
- printf("\n-------------------------------\n");
- f2();
- f2();
- f2();
-
- return 0;
- }
-
看看代码的演示效果:
a作为静态变量,虽然f1( i )被调用三次,但是只有第一次会执行static int a = i++; ,所以a=1 ,后面的 两