static--静态的
作用:1.修饰局部变量
2.修饰全局变量
3.修饰函数
一.修饰局部变量
void test()
{
static int a = 1; //static 修饰局部变量 我们说局部变量是进入函数开始创建 出函数自动销毁的 但是 //这里创建的a不会被销毁 更深次的理解就是局部变量在内存的栈区上存储 但被 //static修饰之后就就会存储到静态区 储存位置发生了变化 使局部变量出了作用域不 //会被销毁 影响了变量的生命周期
//总结:作用域不受影响 影响了生命周期
a++;
printf("%d ", a); // 输出结果为 2 3 4 5 6 7 8 9 10 11 说明循环调用函数10次 每次的值是在上一次的 //值上+1
}
int main()
{
int i = 0;
while(i<10)
{
test();
i++;
}
return 0;
}
二.修饰全局变量
static int g_val = 2023; test.c文件下
int main() add.c文件下
{
printf("%d\n", g_val);//不能打印东西的
return 0;
}
//全局变量是具有外部链接属性的 在其他源文件内部只要声明就可以使用 用static修饰的全局变量 他
//的外部链接属性就变成了内部链接属性 只能在自己所在的源文件内部使用 其他源文件不能使用 影响
//了变量的作用域
三.修饰函数
//函数和全局变量一样 也具有外部链接属性 被static修饰之后 函数的外部链接属性就变成了内部链接属
//性 只能在自己所在的源文件内使用 最终也相当于影响了作用域