Длина массива в параметрах массива

я читаюПрограммирование на C: современный подход К.Н.Кинга, чтобы выучить язык программирования Си и в текущей главе рассказывается о функциях, а также параметрах массива. Объясняется, что можно использовать подобные конструкции для выражения длины параметров массива:

1.

void myfunc(int a, int b, int[a], int[b], int[*]); /* prototype */

void myfunc(int a, int b, int n[a], int m[b], int c[a+b+other_func()]) {
... /* body */
}

2.

void myfunc(int[static 5]); /* prototype */

void myfunc(int a[static 5]) {
... /* body */
}

Итак, вопрос (ы):

а. Являются ли конструкции в примере 1 чисто косметическими или они влияют на компилятор?

б. Этоstatic Модификатор в этом контексте только косметического характера? что именно это значит и делает?

с. Также возможно объявить параметр массива как этот; и является ли он таким же косметическим, как в примере 1?

void myfunc(int[4]);

void myfunc(int a[4]) { ... }

Ответы на вопрос(1)

Ваш ответ на вопрос