目录
一、修饰局部变量
static修饰局部变量称为静态局部变量:
那它有什么作用呢?请看以下代码:
可以看到这个简单的程序的运行结果是1 1;但是如果在test函数中变量i 用static修饰结果还会一样吗?
可以看到修饰过后结果为1 2;这是为什么呢?
其实static修饰局部变量时实际上是更改了变量的存储位置,计算机的内存如下图所示
未被static修饰之前变量是放在栈区的,修饰之后放在了静态区,从而导致出了作用域依然存在,生命周期没有结束,进入下次函数时依然存在,并且变量的值保留上次运行的结果。
另外静态区中的数据的生命周期和程序的生命周期相同。
二、修饰全局变量
一个全局变量是有外部链接属性的,即在一个工程内部,不同源文件里利用extern声明后可以相互引用,但是被static修饰后全局变量的外部链接属性将被改变,只能在本源文件内部使用,不能在其他源文件中使用。
三、修饰函数
static修饰函数的作用与修饰全局变量作用相同这里就不再解释了。
以上如有错误请各位大佬指正!!!