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