目录
1.static修饰局部变量
修饰过后局部变量在出了作用域后不销毁,改变了局部变量的生命周期,生命周期变长,和程序的生命周期一样。本质上是改变了变量的存储类型
void test1()
{
int a = 1;
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
while (i < 10)//循环十次
{
test1();
i++;
}
return 0;
}
针对test1():
程序每运行一次,a都会销毁。
a每一次都会从1开始,++之后增加成2。
所以结果是2 2 2 2 2 2 2 2 2 2
void test2()
{
static int a = 1;
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
while (i < 10)//循环十次
{
test2();
i++;
}
return 0;
}
针对test2():
由于有static ,程序每次运行,a不会销毁。
a第一次都会从1开始,++之后增加成2,第二次++后变成3,一次类推
所以结果是2 3 4 5 6 7 8 9 10 11
拓:在使用全局变量时,如果不在一个文件里,进行声明即可(用extern声明)
2.static修饰全局变量
(1)static修饰全局变量后,这个全局变量只能在自己所在的源文件(.c)内部可以使用,其他源文件不能使用
(2)全局变量在其他源文件内部可以使用,是因为全局变量具有外部链接属性。但是被static修饰之后,就变成了内部链接属性,所以其他源文件就不能使用
3.static修饰函数
使得函数只能在自己所在的源文件内部使用,不能在其他源文件内使用。本质上 static将函数的外部链接属性变成了内部链接属性
未加static:
加了static: