1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void test() 5 { 6 int a=0; 7 static int b=0; //【skill】相当于定义了全局变量 8 printf("int a:%d static int b:%d\n",a++,b++); 9 } 10 int main(int argc, char* argv[]) 11 { 12 for(int i=0 ; i<5 ; ++i) 13 test(); 14 system("pause"); 15 return 0; 16 }
external 用于多个c文件之间参数问题的解决
百度上的解释:
C语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块是被建立,它在该程序块活动时存在,退出该程序块时撤销。
在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字a u t o定义局部变量这一作法保持一致。局部变量仅由其被定义的模块内部的语句所访问。换言之,局部变量在自己的代码模块之外是不可知的。切记:模块以左花
括号开始,以右花括号结束。
对于局部变量,要了解的最重要的东西是:它们仅存在于被定义的当前执行代码块中,即局部变量在进入模块时生成,在退出模块时消亡。
定义局部变量的最常见的代码块是函数。
整数变量x被定义了两次,一次在func1()中,一次在func2()中。func1()和func2()中的x互不相关。其原因是每个x作为局部变量仅在被定义的块内可知。
语言中包括了关键字auto,它可用于定义局部变量。但自从所有的非全局变量的缺省值假定为auto以来,auto就几乎很少使用了