Наткнулся на интересную особенность при инициализации массива int.
int arr1[10];
int main() {
int arr2[10];
return 0;
}
Все значения arr1 равны 0, а все значения arr2 значениями -858993460 ( мое предположение, что это просто неинициализированная память)
Вопрос такой: почему снаружи main компилятор делает что-то типа этого int arr1[10] = {}; , а внутри не делает ничего?
Таковы правила инициализации всех объектов со статическим классом хранения. И в С, и в С++ они подвергаются нулевой инициализации, если вы не предоставили явного инициализатора.
В С++ процесс инициализации существенно более сложен, чем в С, т.к. С++ поддерживает динамическую инициализацию, но к вашему случаю это не относится.
Автоматические переменные тривиальных типов не подвергаются никакой инициализации, если вы явно не укажете инициализатор.
Продвижение своими сайтами как стратегия роста и независимости