Требуется ли для определения константного массива с инициализацией в 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 или нет.

Другие вопросы по тегам