问:
为什么内置类型定义内一个函数体的未初始化的对象有明确的值,而对象的内置式定义外任何功能都被初始化为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;
}
考虑每次调用函数时初始化全局变量与初始化局部变量的开销。 – Angew 2014-11-05 13:27:42
这显然是**不是重复**(至少不是链接的问题)。如果*全局内存被初始化,OP不会问* *为什么*,以及为什么局部变量是*不是*,这两个都没有在链接问题中得到回答。 – leemes 2014-11-05 13:46:21