当前位置: 首页 > 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.gsyq.cn/news/38938.html

相关文章:

  • 模拟赛 31
  • P1.python环境的配置和安装
  • CSP-S 2025 游寄喵
  • Windows 10操作技巧:如何在 Windows 10 中恢复永久删除的文件
  • 2026 年预估适用于 Windows 10_11 的 10 款最佳数据恢复软件
  • 2025 年 9 款最佳 PDF 文档管理编辑工具
  • flex:1 什么意思
  • ESP32 I2C通信
  • day05-智能换脸-12306出行建议-提取音频工作流
  • x./AC自动机
  • 怎么在现有App里融入AI对话能力
  • DFS 序 O(1) 求 LCA
  • 矿山通信如何实现全域一体化?迈威为煤矿装上了“智慧神经网络”
  • 哈希学习总结
  • 2025 年 11 月制冷设备厂家推荐排行榜,小型制冷设备,空调制冷设备,工业制冷设备,商用制冷设备,大型制冷设备,制冷设备安装与维修服务公司推荐
  • 从创作到分析全搞定!2025公众号效率工具深度测评,这波升级95%的人还不知道
  • 20232304 2025-2026-1 《网络与系统攻防技术》实验四实验报告
  • k8s-java应用部署(4)
  • 单目三角化原理 - MKT
  • [CEOI 2017] Sure Bet
  • LeRobot v0.4.0 正式发布:全面提升开源机器人的学习能力
  • whk 笔记
  • 冬月做题记录
  • 低代码与传统开发:不是替代,而是互补
  • 11.3模拟赛
  • 2025 年度盘点,最新主流 IM SDK 安全合规排名:融云打造全球化业务安全底座
  • 2025防火/模压/瓦楞/大跨距/热镀锌/热浸锌/不锈钢/光伏/铝合金/锌铝镁/电缆桥架推荐榜:百著金属以全场景防护领跑,四家企业凭细分优势突围
  • 低代码如何打破企业数字化转型的 “人才瓶颈”?
  • Java数组——数组定义、声明、创建
  • 2025年苏州竞速无人机电机,安防无人机电机,电机厂家精选榜单:睿创电子,优质企业值得关注