Требуется ли для определения константного массива с инициализацией в C параметр длины? - PullRequest
0 голосов
/ 25 мая 2018
const int array[]  = {1,2};
const int array[2] = {1,2};

И компилировать и работать без проблем.Есть ли какая-то разница в них?

(я использую Codevision, но это не должно иметь значения)

1 Ответ

0 голосов
/ 25 мая 2018

Нет, разницы нет.

Единственное исключение - для 2-го случая, если инициализировать массив char строковым литералом, а размер массива не отражает терминатор '\0',тогда последний отрубается.

char s[] = "alk" // makes s 4 chars wide
char s[3] = "alk" // makes s 3 chars wide

Для всех других типов или видов инициализации компилятор должен предупреждать о слишком большом инициализаторе.

Если инициализатор "меньше", то массивостальные элементы инициализируются так, как если бы они были определены в глобальном масштабе, то есть как если бы они были static.

Все это совершенно не связано с тем, является ли что-либо в этом контексте const или нет.

...