Can anyone describe what following statements would mean in C : long (*alpha(void))(int); double (**beta(void))(int); short *(*(*(*gamma)(void))[8])(void);