int array[12];
Объявляет массив с 12 элементами, а не пустой массив.
Кроме того, он объявляет их без инициализатора, которые (в области функций) означают, что они будут инициализированы по умолчанию. Для int
это означает, что инициализация не выполняется, и итоговые значения int
s будут иметь неопределенные значения. Это поведение определено в спецификации для C++.
Если вы хотите обнулить инициализировать массив, то вы должны дать ему инициализатор:
int array[12] = {};
Причина, по которой это не принуждает поведение является то, что есть потери производительности инициализации и некоторые программы написаны правильно работать, не подвергаясь этому наказанию.
Массив никогда не пуст. Что вы хотите спросить, почему вы получаете ненулевые значения в нем. – juanchopanza