提问人:Asif_102 提问时间:2/16/2023 最后编辑:Asif_102 更新时间:2/16/2023 访问量:88
全局数组声明器的 C++ 初始值与局部函数数组声明器的初始值 [duplicate]
c++ initial value of global array declarer vs initial value of local function array declarer [duplicate]
问:
#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 函数中声明数组并打印数组所有索引的值后,找到所有索引处的垃圾值。
在竞争性编程中,我看到许多人在他们的代码中全局声明数组。但我不明白确切的原因
答:
3赞
Remy Lebeau
2/16/2023
#1
如果变量声明没有指定显式初始值设定项,并且不是其构造函数初始化其数据的 / 类型(的一部分),则该变量仅在编译时默认初始化为零,当它在全局或静态作用域中声明时,而在局部作用域中声明时,它根本不默认初始化为任何内容。class
struct
上一个:C++ 对局部静态变量的依赖
下一个:队列的静态初始化
评论
int a[100] {};