27th August 2002
C is sometimes castigated for the syntax of its declarations, particularly ones that involve pointers to functions. The syntax is an attempt to make the declaration and the use agree; it works well for simple cases, but it can be confusing for the harder ones, because declarations cannot be read left to right, and because parentheses are over-used. The difference between int *f() and int (*pf) illustrates the problem
char (*(*x)()) x: array of pointer to function returning pointer to array of char- Kernighan & Ritchie, The C Programming Language, 2nd Edition, Chapter 5 (Pointers and Arrays), section 5.12 (Complicated Declarations)
All whitespace is equivalent except in certain situations.- Footnote 82 to the ANSI C standard.