此问题在此处已有答案:
Why are global and static variables initialized to their default values?(5个答案)
昨天关闭。
#include <bits/stdc++.h>
using namespace std;
int a[100]; // <--
int main() {
for (int i = 0; i < 100; i++) {
cout << a[i] << " ";
}
return 0;
}
在上面的代码中全局声明数组之后,所有的索引都得到值0。这是什么原因?
#include <bits/stdc++.h>
using namespace std;
int main() {
int a[100]; // <--
for (int i = 0; i < 100; i++) {
cout << a[i] << " ";
}
return 0;
}
在上面的代码中,在main函数中声明数组并打印数组所有索引的值之后,就会找到所有索引处的垃圾值。
在竞争性的编程中,我看到许多人在代码中全局声明数组,但我不明白其中的确切原因
1条答案
按热度按时间wnrlj8wa1#
如果变量声明没有指定显式初始化器,并且不是构造函数初始化其数据的
class
/struct
类型(的一部分),则只有当变量在全局或静态作用域中声明时,才会在编译时默认初始化为零,而当变量在局部作用域中声明时,则根本不会默认初始化为任何值。