欢迎光临
我们一直在努力

工作后才懂!C 语言 static 关键字的 4 个用法(嵌入式新人必看)

大家好,我是一名刚入职的嵌入式开发新人。最近在看公司项目代码,发现 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 / 代码规范
  • 车载开发学习笔记

欢迎点赞、收藏、关注,一起成长!

赞(0)
未经允许不得转载:171主机测评 » 工作后才懂!C 语言 static 关键字的 4 个用法(嵌入式新人必看)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址