c++全局数组声明符的初始值与局部函数数组声明符的初始值[重复]

c0vxltue  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(121)

此问题在此处已有答案

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函数中声明数组并打印数组所有索引的值之后,就会找到所有索引处的垃圾值
在竞争性的编程中,我看到许多人在代码中全局声明数组,但我不明白其中的确切原因

wnrlj8wa

wnrlj8wa1#

如果变量声明没有指定显式初始化器,并且不是构造函数初始化其数据的class/struct类型(的一部分),则只有当变量在全局或静态作用域中声明时,才会在编译时默认初始化为零,而当变量在局部作用域中声明时,则根本不会默认初始化为任何值。

相关问题