在C语言中static的作用如下
static作用:“改变生命周期” 或者 “改变作用域”
1. 在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放
例如:
#include <stdio.h>
int i= 1;
void fun(void)
{
static int count = 0;
count++;
printf("count=%d\n",count);
}
int main(void)
{
while(1)
{
fun();
}
return 0;
}
程序的运行结果是:
由执行的结果可以看出来,用static修饰的局部变量每次在进入申明它的函数的时候,都是保持着上次执行完成该函数时变量的值。这就说明了static改变了局部变量的生存周期,使得局部变量在程序结束后才释放掉。
2. static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。
3. static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0。
(1)不想被释放的时候,可以使用static修饰。比如修饰函数中存放在栈空间的数组。如果不想让这个数组在函数调用结束释放可以使用static修 饰
(2)考虑到数据安全性(当程想要使用全局变量的时候应该先考虑使用static)
最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。