static 定义全局变量方法

时间:2022-07-15 10:29:08
 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就几乎很少使用了