作者:书友34624989 | 来源:互联网 | 2023-06-08 15:21
1.static修饰局部变量static未修饰局部变量时当static修饰局部变量时造成这种局面的原因就是static修饰局部变量改变了局部变量的生命周期(本质上来说是改变了变量的
1.static修饰局部变量
static未修饰局部变量时
当static修饰局部变量时
造成这种局面的原因就是static修饰局部变量改变了局部变量的生命周期(本质上来说是改变了变量的存储类型)
static修饰局部变量的时候,局部变量就变成了静态的局部变量出了局部的范围,不会销毁,下一次进入函数依然存在其实是因为: static修饰的局部变量是存储在静态区的。static修饰局部变量时实际改变的是变量的存储位置,本来局部变量是放在栈区的,被static修饰后放在了静态区。从而导致,出了作用域依然存在,生命周期并没有结束。
2.static修饰全局变量
全局变量本身作用域是整个工程,生命周期也是整个程序的生命周期。static修饰全局变量是使这个全局变量只能在自己所在的那个源文件使用,其他源文件不能使用。
而全局变量能被其他源文件使用,是其具有外部链接属性,被static修饰后,变成了内部链接属性
栈区 |
局部变量 函数参数 |
堆区 |
动态内存分配 |
静态区 |
全局变量 static修饰的静态变量 |
3.static修饰函数
使函数只能在源文件内部使用,本质上也是static改变了连接属性,不过是将外部连接属性改成内部链接属性