static关键字有什么作用?
在某些具体的应用场景中,我们可能不想让全局变量或者函数跨文件访问,只在本文件内部被访问,相当于维护了我们的代码的安全
1.static修饰全局变量
static修饰全局变量时,该变量只能在本文件内部被访问,不能被外部其他文件直接访问
2.static修饰函数
static修饰函数时,该函数只能在本文件内被访问,不能被外部其他文件直接访问(与static修饰全局变量类似)
3.static修饰局部变量
static修饰局部变量时,更改了局部变量的生命周期,作用域实际上并没有发生改变
所以与全局变量并不完全相同,不能等价于全局变量(全局变量的生命周期和作用域都是整个工程,随着工程的创建开始,结束销毁)
从这段代码可以看出,这样写是编译不了的,会报错
原因在于static修饰局部变量时,改变的是局部变量的生命周期,并没有改变作用域
4.为什么static有这样的作用呢?
局部变量的创建是在栈区上开辟空间的,具有临时性。在上面这个例子中,fun函数内的a就是一个局部变量,而一旦被static修饰,变量由栈区到了全局数据区,在整个“进程”运行生命周期内,都是有效的(也就是全局性)