发新帖我要提问
123
返回列表
打印
[复制链接]
楼主: benjaminka
手机看帖
扫描二维码
随时随地手机跟帖
41
louliana| | 2025-3-16 11:52 | 只看该作者 回帖奖励 |倒序浏览
默认全局变量和函数具有外部链接性​(可在多个文件中被引用)。添加 static 后,它们的链接性变为内部,即仅在本文件可见,不同文件中同名标识符不会冲突。

使用特权

评论回复
42
wangdezhi| | 2025-3-16 12:11 | 只看该作者
如果在多个头文件中大量使用static变量(尤其是全局变量),并且这些头文件被多个源文件包含,那么每个源文件都会有一个该变量的独立副本。这会导致程序的二进制大小增加,因为每个副本都会占用空间。
此外,如果static变量在程序运行时被频繁地初始化和销毁(特别是在函数内部作为静态局部变量时),这可能会对内存使用产生影响,尤其是当这些变量占用大量内存或初始化/销毁过程复杂时。然而,对于static全局变量,它们在程序启动时初始化一次,在程序结束时销毁,因此对内存使用的动态影响较小。

使用特权

评论回复
43
usysm| | 2025-3-16 13:10 | 只看该作者
谨慎使用局部静态变量,避免状态污染

使用特权

评论回复
44
mikewalpole| | 2025-3-16 13:55 | 只看该作者
局部静态变量复用内存,避免重复申请。

使用特权

评论回复
45
everyrobin| | 2025-3-16 14:19 | 只看该作者
全局静态变量占用内存直到程序结束。

使用特权

评论回复
46
yorkbarney| | 2025-3-16 14:54 | 只看该作者
static 是 C 语言中强大的工具,但其使用需权衡封装性、内存占用和可维护性。

使用特权

评论回复
47
macpherson| | 2025-3-16 15:44 | 只看该作者
在函数内部定义时,static使变量存储在静态存储区(而非栈中),生命周期延长到整个程序运行期间,但作用域仍限于函数内部。

使用特权

评论回复
48
hilahope| | 2025-3-18 22:02 | 只看该作者
在文件作用域(即所有函数之外)定义的静态变量,其作用域仅限于定义它的文件内部。这意味着其他文件无法直接访问或引用这些静态全局变量,从而避免了不同文件之间的命名冲突。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则