关键字 static(静态的)

1.static修饰局部变量

static未修饰局部变量时

 当static修饰局部变量时

 

造成这种局面的原因就是static修饰局部变量改变了局部变量的生命周期(本质上来说是改变了变量的存储类型)

static修饰局部变量的时候,局部变量就变成了静态的局部变量出了局部的范围,不会销毁,下一次进入函数依然存在其实是因为: static修饰的局部变量是存储在静态区的。static修饰局部变量时实际改变的是变量的存储位置,本来局部变量是放在栈区的,被static修饰后放在了静态区。从而导致,出了作用域依然存在,生命周期并没有结束。
2.static修饰全局变量

全局变量本身作用域是整个工程,生命周期也是整个程序的生命周期。static修饰全局变量是使这个全局变量只能在自己所在的那个源文件使用,其他源文件不能使用。

而全局变量能被其他源文件使用,是其具有外部链接属性,被static修饰后,变成了内部链接属性
 

栈区

局部变量

函数参数

堆区 动态内存分配
静态区

全局变量

static修饰的静态变量

3.static修饰函数

使函数只能在源文件内部使用,本质上也是static改变了连接属性,不过是将外部连接属性改成内部链接属性

猜你喜欢

转载自blog.csdn.net/qq_52592775/article/details/121961911