static修饰局部变量,改变了局部变量的生命周期(本质上是改变变量的存储类型)。
栈区 局部变量 ,函数的形参
堆区 malloc ,ralloc , calloc -->动态开辟内存
静态区 全局变量 , static 修饰的静态变量
#include<stdio.h>
//static关键字修饰
// 1.局部变量
// 2.全局变量
// 3.函数
void test() {
static int a = 1;// static修饰的局部变量
a++;
printf("%d ", a); // 2 3 4 5 6 7 8 9 10 11
}
int main() {
int i = 0;
while (i < 10) {
test();
i++;
}
return 0;
}
1.static修饰全局变量,使得这个全局变量只能在本源文件.c中使用,其他源文件不能使用
2.全局变量,可以在其他源文件中使用,是因为全局变脸具有外部链接属性,但是被static修饰后, 就变成了内部链接属性,其他源文件不能再链接了
static修饰函数,是函数只可以在所在源文件内部使用,
本质上:static函数的外部链接属性被改成了内部链接属性