3

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

4

4 回答 4

3

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

于 2012-12-01T13:52:49.110 回答
3

如果变量被声明为 extern 但不是全局变量,它也会接受相同的初始化处理。例如

namespace A { extern int x; int x;}

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

于 2012-12-01T14:02:30.760 回答
2

extern只是一个声明
变量是否会被初始化取决于定义

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

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

C++03 标准 8.5/5 恰当地定义了每一个。

好读:

定义和声明有什么区别?

于 2012-12-01T13:52:47.660 回答
1

extern关键字只声明变量存在,并没有定义它的值。由于全局范围,它初始化为 0

于 2012-12-01T13:54:46.937 回答