繁体   English   中英

澄清C中的外部值

[英]Clarification about extern value in C

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

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

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

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

int var = 0;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM