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