关于static的知识
一、核心基础:static 的本质作用
static 的核心是控制两个关键属性:
- 存储周期:变量的 “生命周期”——
static变量存储在全局数据区(而非栈 / 堆),程序启动时分配内存,程序结束时释放(全程只初始化一次); - 作用域 / 链接属性:变量 / 函数能被哪些代码访问 ——
static会缩小作用域(如局部static仅在函数内可见,全局static仅在当前文件可见)。
二、分场景详解 static 的用法
修饰局部变量(最常用场景)
局部变量默认存储在栈区,生命周期仅限于函数调用(每次调用重新初始化,函数结束后销毁)。static 修饰后,局部变量的行为发生根本改变:
核心特性:
存储位置:从栈区移到全局数据区;
生命周期:程序启动时创建,程序结束时销毁(全程存活);
初始化:仅在第一次函数调用时初始化(后续调用跳过初始化,保留上次的值);
默认值:未显式初始化时,默认被编译器初始化为 0(栈上局部变量默认是随机垃圾值);
作用域:仍仅限于当前函数内(只能在函数内部访问,外部无法直接获取)。
