数组初始化混淆

Array Initialization confusion

本文关键字:初始化 数组      更新时间:2023-10-16

我已经经历了[问题1](使用一个默认值初始化普通数组)和[问题2](如何在C++对象中初始化数组)但我无法理解下面的行为。

int main()
{
    int arr[5];
    arr[5] = {-1}; // option 1
    int arr1[5] = { -1 }; //option 2
    for (int i = 0; i < 5; i++)
        cout << arr[i] << " ";
    for (int i = 0; i < 5; i++)
        cout << arr1[i] << " ";
}

选项 1 给出: 垃圾值选项 2 给出值:如预期请用简单的术语解释为什么我在选项 1 和选项 2 中都没有看到相同的行为。

在选项 1 中,您有一个未初始化的数组

int arr[5];

然后,越界分配一个值

arr[5] = {-1};

因为唯一有效的指示是[0] [4].