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