Требуется ли для определения константного массива с инициализацией в C параметр длины?
const int array[] = {1,2};
const int array[2] = {1,2};
И компилировать и работать без проблем. Есть ли разница в этом?
(Я использую Codevision, но это не должно иметь значения)
1 ответ
Решение
Нет, разницы нет.
Единственное исключение для второго случая, если инициализировать char
массив со строковым литералом и размер массива не отражает '\0'
-терминатор, то последний отрубается.
char s[] = "alk" // makes s 4 chars wide
char s[3] = "alk" // makes s 3 chars wide
Для всех других типов или видов инициализации компилятор должен предупреждать о слишком большом инициализаторе.
Если инициализатор "меньше" массива, остальные элементы инициализируются так, как если бы они были определены в глобальном масштабе, то есть как если бы они были static
,
Все это совершенно не связано с тем, является ли что-либо в этом контексте const
или нет.