大家好,我是一名刚入职的嵌入式开发新人。最近在看公司项目代码,发现 static 关键字到处都是,以前在学校只知道一点点,真正工作了才发现它超级重要。
今天用最简单、最直白的话,总结一下 C 语言 static 的 4 个核心用法,新手也能一遍看懂。
1. 修饰局部变量:延长生命周期
局部变量本来是函数调用完就销毁。加了 static,函数结束后变量不会消失,只会初始化一次。
void test() {
static int count = 0;
count++;
printf("%d ", count);
}
调用三次:
第一次输出:1
第二次输出:2
第三次输出:3
特点:
- 只在第一次执行时初始化
- 生命周期变成整个程序运行期间
- 作用域还是函数内部
2. 修饰全局变量:限制作用域
普通全局变量:整个工程都能访问。static 全局变量:只能在当前 .c 文件里用。
// a.c
static int g_value = 100;
其他文件无法通过 extern 引用。
作用:
- 防止变量名冲突
- 提高模块安全性
- 嵌入式驱动、模块里非常常用
3. 修饰函数:内部函数
static 修饰函数,函数就变成文件内部函数。
static void help_func() {
// 只在本文件使用
}
好处:
- 不污染全局函数表
- 不同文件可以有同名函数
- 适合写底层驱动、工具函数
4. 修饰结构体成员:静态成员
C 语言中,static 修饰结构体成员,属于结构体本身,不属于某个变量。
struct demo {
int a;
static int b; // 所有对象共用一个 b
};
特点:
- 所有结构体实例共用一份
- 不占用结构体空间
总结一句话
- static 局部变量:寿命变长
- static 全局变量:作用域变小
- static 函数:只能本文件用
- static 结构体成员:大家共用一个
在嵌入式开发里,static 几乎是写模块、写驱动必用关键字。新人一定要吃透。
我会持续更新:
- C 语言工作实战
- 嵌入式调试技巧
- Git / 代码规范
- 车载开发学习笔记
欢迎点赞、收藏、关注,一起成长!

