c - c中的静态变量

标签 c variables

不能从文件外部访问在文件中声明的静态变量。 但是如果我们在文件中声明一个静态变量和一个全局指针,然后将静态变量的地址赋值给指针,然后externing指针,就可以访问了。

那么说静态变量不能直接访问而是可以使用全局指针间接访问然后externing是对的吗?

最佳答案

说静态变量“不能从外部访问”是不正确的。被声明为 static 与外部访问的可能性完全无关。

当某个实体被声明为static 时,这仅意味着该实体不会与其他翻译单元中同名 的其他实体相关联。

例如,当您在不同的翻译单元中声明两个名为aextern 变量时,这些变量实际上是相同的单个变量。当您在不同的翻译单元中声明两个名为 astatic 变量时,这些变量是两个不同的自变量。这就是 static 在 C 中所做的。没有别的。

用更日常的术语来说,不可能从外部链接到静态变量,即不可能要求链接器让我们通过名称访问静态变量 从外面。但是,始终可以通过其他方式访问它,例如通过指针,前提是您设法以某种方式获得了该指针。

关于c - c中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4728170/

相关文章:

mysql - 在同一个 mysql 语句中创建、设置然后使用变量

java - 我的值一直显示为 NaN

VBA如何在子程序之间使用变量?

c - 关于 gets(string) 的非常奇怪的错误

c - ALSA PCM 回调有什么限制?

c - 如何匹配结构体数组中的变量,然后是位置

python - 比较 Python 中的两个列表

python - 从 python 调用 c 程序时将数组传递给子进程模块的问题

c - 当我在代码中使用指向结构指针的指针时出现返回值 3221225477

PHP访问父类变量