Содержимое неинициализированной части массива зависит от того, где он находится (т. Е. На каком сегменте данных). В случае, если он находится в стеке, неинициализированные элементы являются случайными значениями. Как правило, если это глобальный массив, исходное содержимое также не определено. Если он снабжен спецификатором static
, компилятор инициализирует его содержимое нулями при запуске программы.
Доступ к этой неинициализированной части не запрещен, и это не предполагает неопределенного поведения, но результат может быть неопределенным. Даже доступ к bla[i]
, если i > sizeof(bla)
не является неопределенным поведением, поскольку либо вы имели бы случайное значение или исключение сбоя сегментации.
Никогда не забывайте переменные inicilizar. Это сэкономит вам массу неприятностей. Попробуйте поместить начальное значение для переменной i. – lsalamon