Инициализировать массив в C++

#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 ответа

Решение

если я напишу int arr[10] = {}, все элементы в arr равны 0.

Так работает синтаксис языка. В вашем случае массив будет инициализирован нулем.

но если я просто записываю int arr[10], элементы в arr являются случайными.

В вашем случае элементы массива не инициализируются. Вы не должны читать значения переменных, которые не инициализированы; в противном случае вы вызовете неопределенное поведение.

Согласно справочному сайту cpp ( http://en.cppreference.com/w/c/language/array_initialization), это как инициализировать все элементы массива в ноль:

int a [3] = {}; // неверный C, но допустимый C++ способ обнулить массив области видимости

int arr[10]; ничего не инициализирует, он выделяет блоки памяти размером с int и вы получаете то, что когда-либо было в этой памяти.

int arr[10] = {};инициализирует все int блоков к нулю /0

Другие вопросы по тегам