数组在C ++中初始化

时间:2016-03-10 06:22:54

标签: c++ c++11

#include <iostream>
using namespace std;

int main() {
    int arr[10] = {};
    for(auto element : arr)
    {
        cout<<element<<" ";
    }
    cout<<endl;
}

如果我写int arr[10] = {}arr中的元素都是0。但如果我只是int arr[10],则arr中的元素是随机的。 所以我对int arr[10] = {}感到困惑,我只是声明一个数组int arr[10],但我没有给它任何值,只有{}

3 个答案:

答案 0 :(得分:5)

  

如果我写int arr [10] = {},arr中的元素都是0。

这就是语言的语法是如何工作的。在您的情况下,数组将初始化为零。

  

但是如果我只是在arr [10]中,arr中的元素是随机的。

在您的情况下,数组元素未初始化。您不应该读取未初始化的变量的值;否则你将触发未定义的行为。

答案 1 :(得分:2)

根据cpp参考网站(http://en.cppreference.com/w/c/language/array_initialization),这是如何将所有数组元素初始化为零:

  

int a [3] = {}; //无效的C但是有效的C ++方法将块范围数组清零

答案 2 :(得分:0)

int arr[10]; 没有初始化任何东西,它分配的内存块大小为int,而你正在获得该内存中的内容。

int arr[10] = {}; 正在将所有int块初始化为null / 0