当前位置: 首页 > news >正文

【C】 static用法

 static用法

1. 在 C语言 中,static 关键字用于控制变量或函数的作用域和生命周期。当它修饰函数时,含义如下:

static int add(int a, int b) {return a + b;
}

上面的函数前加了 static,表示这是一个 静态函数(static function)。它的特点是:该函数的作用域仅限于当前源文件(.c 文件)内部,不能被其他文件访问。

 

 

2. 如果在 .h 头文件中定义了一个 static 函数,会发生什么。

static 修饰函数 → 内部链接(internal linkage)
👉 只能在**定义它的编译单元(.c 文件)**中使用。

⚠️ 编译单元(translation unit)指的是:
每个 .c 文件经过预处理(含入所有头文件)后形成的独立编译单元。

 

假设我们有头文件:

// util.h
static int add(int a, int b) {return a + b;
}

然后两个源文件都 #include 它:

// file1.c
#include "util.h"
void f1() {int x = add(1, 2);
}
// file2.c
#include "util.h"
void f2() {int y = add(3, 4);
}

 

当编译器处理 file1.c 时,会把 util.h 的内容直接拷贝进来。同理,file2.c 也会拷贝一份。所以实际上你生成了两个完全独立的函数副本:

file1.o: 定义了一个 static int add()
file2.o: 又定义了一个 static int add()

因为 static 函数是“文件私有”的,每个文件内部都有自己的一份拷贝,不会冲突,也不会共享。

http://www.jsqmd.com/news/30390/

相关文章:

  • Python线程锁
  • 若依前端验证码的实现
  • 从O(n)到O(n):Python字符串拼接的效率陷阱与最佳实践
  • 实验4:MobileNet ShuffleNet - OUC
  • 模拟赛 31
  • CSP-S 2025 T3 小结
  • 第三十二篇
  • 2025年苏州AIGEO 优化服务商深度测评:TOP5 企业核心优势与实战案例对比
  • 使用 Docker Compose 轻松实现 INFINI Console 离线部署与持久化管理
  • 第6章 语句
  • 十一月杂题
  • Modbus RTU 通信格式详解学习笔记
  • Selenium3+Python3 自动化项目项目实战day1
  • P1.python环境的配置和安装
  • Python 中可变对象的“引用赋值”特性——可变对象的“引用传递”
  • CSP-S 2025 游寄喵
  • Modbus协议分类及测试学习笔记
  • MarkDown初入
  • 英语_作文_8AU3_Curiosity
  • 习题-极大原理
  • 极大原理
  • P7. TensorBoard的使用(一)
  • 二分搜索优化DP(子序列问题)
  • 如何从手机内部恢复数据?2025年9大最佳手机数据恢复软件
  • 如何将数据从 Mac 硬盘恢复数据到电脑:所有方法
  • 接口编号
  • Windows 10操作技巧:如何在 Windows 10 中恢复永久删除的文件
  • Mac数据恢复:Mac 十大数据恢复软件详细评测
  • iPad照片、联系人、笔记恢复工具: iPad 数据恢复软件
  • 2026 年预估适用于 Windows 10_11 的 10 款最佳数据恢复软件