#include<stdio.h>

int f1(void) { return 1; }
int f2(void) { return 2; }
int f3(void) { return 3; }
int f4(void) { return 4; }

main() {
   int (*(a[5]))() ; /* or could be void */
   int (*(b[5]))(int a) ; /* both are fine, but*/
   int i ;
 
   a[1] = *f1 ;
   a[2] = &f2 ;
   a[3] = f3 ;
   a[4] = f4 ;

   for (i=1;i<5;i++) printf("%d\n",(a[i])()) ; 
/*   for (i=1;i<5;i++) printf("%d\n",(*(a[i]))()) ; */


}
