Инициализировать массив в 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