在C中,extern变量获得初始值“零”。但是在阅读了这个特定的类别之后。它说将变量视为extern,意味着该值只通过了“decleration stage”。变量如何获得初始值而不进入初始化阶段并为其分配内存特别变量?请考虑以下代码:
extern int var;
int main(void)
{
var = 10;
return 0;
}
我理解为什么会出现问题情况:我们尝试将值初始化为未在内存中分配的变量(变量实际上并不存在)。我的观点是:为什么它的内存不存在以及后续的“外部”术语变量的初始值为“零”。在我看来,这意味着如果它具有一个itial值,内存确实存在....
为使此代码有效,程序的另一部分必须包含var
的定义,例如:
int var = 0;
这是初始值来自的地方。如果您没有提供初始化程序,那么它的行为就像您使用= {0}
初始化一样(这是静态存储持续时间变量的规则)。