Después de haber visto (¡y preguntado!) Tantas preguntas similares a
¿Qué
int (*f)(int (*a)[5])
significa en C?
e incluso viendo que habían hecho un programa para ayudar a las personas a comprender la sintaxis de C, no puedo evitar preguntarme:
¿Por qué se diseñó la sintaxis de C de esta manera?
Por ejemplo, si estuviera diseñando punteros, traduciría "un puntero a una matriz de punteros de 10 elementos" en
int*[10]* p;
y no
int* (*p)[10];
que creo que la mayoría de la gente estaría de acuerdo es mucho menos directo.
Así que me pregunto, ¿por qué la sintaxis no intuitiva? ¿Hubo un problema específico que resuelve la sintaxis (¿tal vez una ambigüedad?) Que desconozco?
cdecl
comando es muy útil para decodificar declaraciones complejas de C. También hay una interfaz web en cdecl.org .