在c语言中,static是用来修饰变量与函数的,主要分为:
- 修饰局部变量
static修饰的局部变量只执行一次,延长了局部变量的生命周期,让静态局部变量出了作用域依然存在,直到程序运行结束后才被释放。
例如:代码1
void test()
{
int i = 0;
i++;
printf("%d ", i);
}
int main()
{
for (int i = 0; i < 10; i++)
{
test();
}
return 0;
}
它的结果为1 1 1 1 1 1 1 1 1 1,因为函数被调用一次,i销毁重建,但是如果加上static关键字,例如代码2
void test()
{
static int i = 0;
i++;
printf("%d ", i);
}
int main()
{
for (int i = 0; i < 10; i++)
{
test();
}
system("pause");
return 0;
}
它的结果为1 2 3 4 5 6 7 8 9 10,因为加上了static关键字,i成为一个静态变量,不会销毁
- 修饰全局变量
static修饰全局变量时,此全局变量只能在本文件内使用,不能在其他文件中访问,即使是extern外部声明也无用
例如:
add.c
int val = 2019;
test.c
int main()
{
extern