我知道如果 char 数组是全局或静态局部的,它的元素会被初始化为 \0,但如果 char 数组是外部变量怎么办?
问问题
3873 次
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 回答