在我们日常使用过程中,static通常有两个作用:
1、修饰变量
静态全局变量:全局变量前加static修饰,该变量就成为了静态全局变量。我们知道,全部变量在整个工程都可以被访问(一个文件中定义,其它文件使用的时候添加extern关键字声明 ),而在添加了static关键字之后,这个变量就只能在本文件内被访问了。因此,在这里**,static的作用就是限定作用域**。
静态局部变量:局不变量添加了static修饰之后,该变量就成为了静态局部变量。我们知道局部变量在离开了被定义的函数后,就会被销毁,而当使用static修饰之后,它的作用域就一直到整个程序结束。因此,在这里static的作用就是限定生命周期。
2、修饰函数
修饰函数则该函数成为静态函数,函数的作用域仅限于本文件,而不能被其它文件调用
eg:
int fun(int x, int y)
{
static int m = 0;
static int i = 2;
i += m + 1;
m = i + x + y;
return m;
}
int main()
{
int j = 4;
int m = 1;
int k;
k = fun(j, m);
printf("%d\n", k);
k = fun(j, m);
printf("%d\n", k);
system("pause");
return 0;
}
输出结果: