c - 全局变量默认是extern吗?如果是,那么为什么它们的默认值是 "0 "?

标签 c global-variables extern

我正在学习C语言,在学习过程中,我遇到了全局变量和extern关键字。我在这个网站( Global variable in C are static or not )上读到了有关它们的信息,并发现

Global variables are extern by default

但我知道全局变量的默认值为0
所以,我很困惑:带有 extern 关键字的变量怎么可能只声明而不定义。

最佳答案

So, I am confused how can it be possible, as variables with extern keyword are only declared not defined.

  • 默认情况下,全局变量是 extern - 这意味着它们可以被其他变量使用 translation unit (可以简单地是其他源文件)。
  • 也就是说,全局变量不能自动从其他源文件中使用,除非这些源文件上有相应的 extern 声明。
  • 确实,extern 关键字没有任何初始化,因为它只是声明。因此,全局变量(来自原始源文件)的自动值 (0) 是在它们自己的定义处获得的。
  • 请注意,只能有一个定义(在原始源文件中),但可以有多个 extern 声明(在其他源文件中)。

关于c - 全局变量默认是extern吗?如果是,那么为什么它们的默认值是 "0 "?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775916/

相关文章:

c - Switch case 程序没有给出输出

javascript - 如何用函数包装 JS 库并将其放入命名空间?

C implicit extern for global variable,什么时候发生,它是如何工作的

c++ - 有人能弄清楚这有什么问题吗?我收到链接错误

c - 如何在 C 中将 4 列文本文件读入两个字符数组?

c - 从文件接收到数据并需要打印它,但程序没有正确读取数据?

被调用的对象 'strn' 不是一个函数

c++ - 将 HW BP 放在哪里以捕获全局变量地址损坏?

Android 全局变量在服务中不起作用

c - 其他文件中的外部变量定义