不能从文件外部访问在文件中声明的静态变量。 但是如果我们在文件中声明一个静态变量和一个全局指针,然后将静态变量的地址赋值给指针,然后externing指针,就可以访问了。
那么说静态变量不能直接访问而是可以使用全局指针间接访问然后externing是对的吗?
最佳答案
说静态变量“不能从外部访问”是不正确的。被声明为 static
与外部访问的可能性完全无关。
当某个实体被声明为static
时,这仅意味着该实体不会与其他翻译单元中同名 的其他实体相关联。
例如,当您在不同的翻译单元中声明两个名为a
的extern
变量时,这些变量实际上是相同的单个变量。当您在不同的翻译单元中声明两个名为 a
的 static
变量时,这些变量是两个不同的自变量。这就是 static
在 C 中所做的。没有别的。
用更日常的术语来说,不可能从外部链接到静态变量,即不可能要求链接器让我们通过名称访问静态变量 从外面。但是,始终可以通过其他方式访问它,例如通过指针,前提是您设法以某种方式获得了该指针。
关于c - c中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4728170/