Господа, Подскажите, зафиксированы ли где-то правила инициализации массивов? char mem[100] = { 1, 2, 3 }; - остаток массива будет заполнен нулями, или мусором? а если char mem[100] PROGMEM = { 1, 2, 3 }; - что-то можно гарантировать про заполнение?
Возможно, что-то в стандарте есть про это, не помню. На практике эти элементы не инициализируются, там остается то, что было раньше.
Вообще-то компилятор вполне способен считать элементы. В интернете сведения противоречивы, вплоть до адского варианта: Все элементы массива можно также инициализировать одним значением: int numbers[6] = {300} // Все элементы инициализированы значением 300 int numbers[10]={23,123}// Инициализированы только первые два элемента В примере который приведен выше все элементы которые не инициализированы принимают значение 0. Понятно, лучше инициализировать самому.
зависит от компилятора. А у Вас есть данные, что после ребута в озу остается шум в элементах массива? Бывает при отладке ребутишь десятками, и нули и только нули.
Добрался до железки, проверил. Всё добивается нулями, PROGMEM тоже. Но полагаться на это не будем, раз стандарт неизвестен.
Так вопрос в том, нужно ли ее самостоятельно чистить или компилятор сам инициализирует память нулями. Иногда не хочется тратить время на проделывание одной и той же операции дважды. Насколько я знаю, это зависит от конкретной реализации компилятора.