关于C中外部价值的澄清

问题描述 投票:-1回答:1

在C中,extern变量获得初始值“零”。但是在阅读了这个特定的类别之后。它说将变量视为extern,意味着该值只通过了“decleration stage”。变量如何获得初始值而不进入初始化阶段并为其分配内存特别变量?请考虑以下代码:

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

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

c extern
1个回答
1
投票

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

int var = 0;

这是初始值来自的地方。如果您没有提供初始化程序,那么它的行为就像您使用= {0}初始化一样(这是静态存储持续时间变量的规则)。

© www.soinside.com 2019 - 2024. All rights reserved.