Во-первых, объявления const Foo array_in[]
и Foo const array_in[]
абсолютно одинаковы в C.
Во-вторых, когда тип параметра функции имеет тип «массив T», он настраивается автоматически на «указатель на тип T». Таким образом, компилятор делает вид, что вы написали:
void func(const Foo *array_in)
или эквивалентно
void func(Foo const *array_in)
Обратите внимание, что и const Foo *array_in
, и Foo const *array_in
означают одно и то же в C (указатель Const Foo). Однако Foo * const array_in
означает что-то другое (постоянный указатель на Foo).