澄清C中的外部值

时间:2019-02-21 23:02:58

标签: c extern

在C中,一个extern变量的初始值为“零”。 但是,在阅读了该特定类的类别之后。它说,将变量清除为外部变量,意味着该值仅通过了“ decleration stage”。为什么变量可以在不进行初始化阶段的情况下获取初始值,也不为该变量分配内存。特定变量? 请考虑以下代码:

extern int var; 
int main(void) 
{ 
var = 10; 
return 0; 
}

我理解为什么会出现问题的情况:我们试图将一个值初始化为一个未在内存中分配的变量(该变量实际上并不存在)。 我的观点是:为什么它的内存不存在,并且遵循“外部”的术语,变量的初始值为“零”。在我看来,这意味着该内存确实具有itial值。...

1 个答案:

答案 0 :(得分:1)

要使此代码有效,程序的另一部分必须包含var的定义,例如:

int var = 0;

是初始值的来源。如果不提供初始化程序,则它的行为就像您使用= {0}进行初始化(这是静态存储持续时间变量的规则)。