我正在学习C语言,在此期间,我遇到了全局变量和extern关键字。我在这个网站上阅读了它们(C 中的全局变量是否是静态的),发现
默认情况下,全局变量是外部变量
但我知道全局变量的默认值是 0
.
所以,我很困惑:怎么可能只声明extern
关键字的变量而不定义。
所以,我很困惑这怎么可能,因为带有 extern 关键字的变量只声明未定义。
- 默认情况下,全局变量是 extern - 这意味着它们可以被其他翻译单元使用(可以只是其他源文件)。
- 上述全局变量不能自动从其他源文件中使用,除非这些源文件上有相应的
extern
声明。 - 没错,
extern
关键字没有任何初始化,因为它只是声明。因此,全局变量(来自原始源文件)的自动值 (0) 是在它们自己的定义点获得的。 - 请注意,只能有一个定义(在原始源文件中),但
extern
声明(在其他源文件中)可以一样多。