可能的重复:
“静态”在C程序中意味着什么?

什么是 static 关键字的含义在C中?

我正在使用ANSI-C。我已经在几个代码示例中看到了 static 关键字在变量前和功能前面。使用变量的目的是什么?对于使用功能,目的是什么?

有帮助吗?

解决方案

作为一个简短的答案,有两种用法 static 定义变量时的关键字:

1-在文件范围中定义的变量 static 关键词, IE 定义的外部功能仅在该文件中可见。从其他文件访问它们的任何尝试都将在链接时间导致未解决的符号。

2-定义为 static 函数内的一个块内部将在同一代码块的不同调用中持续或“生存”。如果将它们定义为初始化,则仅初始化一次。 static 通常保证将变量初始化为 0 默认。

其他提示

static 在函数的正文中,IE用作变量存储分类器使该变量在函数调用之间保留其值 - 可以说,一个函数中的静态变量仅能可见到该函数。此用途 static 始终使其在线程中使用 不安全 你应该避免它。

另一个用例正在使用 static 在全局范围上,IE用于全局变量和函数:静态函数和全局变量是编译单元的本地,即它们不显示在编译二进制对象的导出表中。因此,他们不会污染名称空间。声明静态的所有功能和全局变量,不可从编译单元(即C文件)访问,这是一个好主意!请注意,不得将静态变量放在标题文件中(除了非常罕见的特殊情况外)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top