外部变量是否初始化为其默认值?

时间:2012-12-01 13:50:18

标签: c++ extern

我知道如果一个char数组是一个全局或一个静态局部,它的元素初始化为\ 0,但是如果char数组是一个外部变量怎么办?

4 个答案:

答案 0 :(得分:3)

如果变量声明为extern但是非全局变量,它也会收到相同的初始化处理。例如

namespace A { extern int x; int x;}

此非全局变量将初始化为零。所有命名空间范围变量都接受此处理。

答案 1 :(得分:2)

extern只是 声明 变量是否将初始化取决于 定义

此外,变量的值将取决于初始化的类型。 C ++标准定义了3种类型的初始化:

  • 零初始化
  • 默认初始化
  • 值初始化

C ++ 03 Standard 8.5 / 5恰当地定义了每个。

好读:

What is the difference between a definition and a declaration?

答案 2 :(得分:2)

extern变量只是一个声明。变量在定义它的模块中初始化。由于在该模块中变量是全局变量,因此它被初始化为零。

答案 3 :(得分:1)

extern关键字仅声明变量存在,它不定义其值。 因为全球范围,它初始化为0