【发布时间】:2014-11-05 13:24:44
【问题描述】:
问题:
为什么在函数体内部定义的未初始化的内置类型的对象有未定义的值,而定义的内置类型的对象任何函数的外部都初始化为0或''?
举个例子:
#include <iostream>
using std::cout; using std::endl;
int ia[10]; /* ia has global scope */
int main()
{
int ia2[10]; /* ia2 has block scope */
for (const auto& i : ia)
cout << i << " "; /* Result: 0 0 0 0 0 0 0 0 0 0 */
cout << endl;
for (const auto& i : ia2)
cout << i << " "; /* Result: 1972896424 2686716 1972303058 8
1972310414 1972310370 1076588592 0 0 0 */
return 0;
}
【问题讨论】:
-
考虑一次初始化全局变量与每次调用函数时初始化局部变量的开销。
-
这显然是不是重复的(至少不是链接问题)。 OP 不问是否全局内存已初始化,而是为什么,以及为什么局部变量不是,这两个都没有回答在链接的问题中。
标签: c++ c++11 scope initialization built-in-types