Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 外部变量是否初始化为其默认值?_C++_Extern - Fatal编程技术网

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

C++ 外部变量是否初始化为其默认值?,c++,extern,C++,Extern,我知道,如果字符数组是全局或静态局部数组,其元素将初始化为\0,但如果字符数组是外部变量呢?extern只是一个声明 变量是否初始化取决于定义 此外,变量的值将取决于初始化的类型。C++标准定义了3种初始化: 零初始化 默认初始化 值初始化 C++03标准8.5/5恰当地定义了每一个 读得好: 外部变量只是一个声明。变量在定义它的模块中初始化。由于该模块中的变量是全局变量,因此初始化为零。关键字extern仅声明变量存在,而不定义其值。 由于全局作用域的原因,如果变量声明为extern但不是

我知道,如果字符数组是全局或静态局部数组,其元素将初始化为\0,但如果字符数组是外部变量呢?

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

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

  • 零初始化
  • 默认初始化
  • 值初始化
C++03标准8.5/5恰当地定义了每一个

读得好:


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

关键字
extern
仅声明变量存在,而不定义其值。
由于全局作用域的原因,如果变量声明为extern但不是全局变量,那么它也会收到相同的初始化处理。比如说

namespace A { extern int x; int x;}

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

声明为extern的变量将始终被初始化。@Johanneschaub litb:是,该值将取决于初始化的类型您的anwswer表示不是,因为您的“是”将取决于它是否是全局的。你的意图是什么?@johanneschaub这是因为链接必须存在变量,而不是因为它是extern@JohannesSchaub-利特:嗯……你在第二次阅读时是正确的,它似乎是相切的。修改了它。