static所定义的是静态唯一变量,他所定义的变量会被存放在全局/静态区。static变量的值只能初始化一次,如果未进行初始值,系统会自动为其赋值0。当我们在调用函数时,函数内的变量会随着执行结束弹出而被栈区自动回收掉,但如果定义的变量为static变量,他将不会被回收。所以他的生命周期是程序开始运行到结束。它的作用域是定义所在的位置,如果是在项目中定义,它的作用域就是整个项目;如果实在目标文件那么作用域就是所在目标文件;如果实在某个函数内定义,那作用域就是这个函数。比如说我们在定义一个全局变量时,在前面加上了static,使其成为了静态全局变量,那么他就是当前源代码的全局变量,不可以在其他源代码中通过extern来引用。
static 理解为局部内的 唯一变量 相当于全局,但全局不可访问