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