Нет, разницы нет.
Единственное исключение - для 2-го случая, если инициализировать массив char
строковым литералом, а размер массива не отражает терминатор '\0'
,тогда последний отрубается.
char s[] = "alk" // makes s 4 chars wide
char s[3] = "alk" // makes s 3 chars wide
Для всех других типов или видов инициализации компилятор должен предупреждать о слишком большом инициализаторе.
Если инициализатор "меньше", то массивостальные элементы инициализируются так, как если бы они были определены в глобальном масштабе, то есть как если бы они были static
.
Все это совершенно не связано с тем, является ли что-либо в этом контексте const
или нет.