一、static是什么?
在C语言中关键字static是用来修饰变量和函数的,它可以改变函数和变量的生命周期和作用域。
二、使用步骤
1、使用方法
在我们定义的变量或者函数前加static即可。
如下 static int a=0;或者static int MAX(int x,int y)(MAX是定义的函数)
当static修饰局部变量时:
代当码如下(示例):
void text()
{
int i = 1;
i ++;
printf("%d ", i);
}
int main()
{
int i = 0;
for (i = 0; i <= 10; i++)
{
void text();
}
return 0;
}//运行结果为2 2 2 2 2 2 2 2 2 2
void text()
{
static int i = 1;
i++;
printf("%d\n", i);
}
int main()
{
int i = 0;
for (i = 0; i <= 10; i++)
{
text();
}
return 0;
}//用static修饰定义的临时变量i(也是局部变量)时运行结果为2 3 4 5 6 7 8 9 10 11 12
当static修饰全局变量时
代码如下(示例):
在源文件text 中 使用text2源文件中定义的全局变量时要使用extern(声明变量) +变量名;
源文件text2中的代码:
源文件text中的代码:
//int main()
{
extern globe;
printf("%d", globe);
return 0;
}//不用static修饰全局变量时输出结果如下:
当使用static修饰变量globe时,程序会报错
源文件text2中的代码:
源文件text中的代码不变时,运行后显示
当用static修饰函数时:
代码如下:源文件text2中的代码:
static int MAX(int x, int y)
{
if (x > y)
return x;
else
return y;
}
源文件text中的代码:int main()
{
extern MAX(int, int);
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int max = MAX(a, b);
printf("%d\n", max);
return 0;
}//运行结果会出错;
如果不是用static修饰MAX(int x,int y)时,输入20,10会显示20;
该处使用的url网络请求的数据。
总结
当使用static修饰局部变量时改变了变量的生命周期,让静态变量出了作用域依然存在,不会销毁,指导程序结束,生命周期才结束。
当使用static修饰全局变量时,使得这个全局变量只能在本源文件内使用,不能再其他源文件内使用。
当使用static修饰函数时,使得函数只能在本源文件内使用,不能在其他源文件使用。