Longitudes de matriz en parámetros de matriz
Estoy leyendoProgramación en C: un enfoque moderno por K.N.King para aprender el lenguaje de programación C y el capítulo actual habla sobre las funciones y también los parámetros de la matriz. Se explica que uno puede usar construcciones como estas para expresar la longitud de los parámetros de la matriz:
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 */
}
Entonces las preguntas son:
a. ¿Las construcciones del ejemplo 1 son puramente cosméticas o tienen un efecto en el compilador?
si. Es elstatic
modificador en este contexto solo de naturaleza cosmética? ¿Qué significa y qué hace exactamente?
C. ¿También es posible declarar un parámetro de matriz como este; ¿Y es tan cosmético como el ejemplo 1?
void myfunc(int[4]);
void myfunc(int a[4]) { ... }