#include #include int func1(void) { printf("call to func1\n"); return 0; } int func2() { printf("call to func2\n"); return 0; } typedef int (*intXint2int)(int,int); // intXint2int is the name int add(int x,int y) { return x+y; } int mult(int x,int y) { return x*y; } intXint2int nuts1() { return add; } int nuts2(intXint2int f,int x,int y) { return f(x,y); } int main() { int (*f)(); int (*g)(void); intXint2int h[2]={add,mult}; f=func1; g=func2; f(); g(); g=func1; f=func2; f(); g(); for (int i=0;i<5;i++) { printf("i=%d",i); for (int j=0;j<5;j++) printf(" j=%d + %d * %d",j,h[0](i,j),h[1](i,j)); printf("\n"); } printf("nuts1(100,23)=%d\n",nuts1()(100,23)); printf("nuts2(mult,100,23)=%d\n",nuts2(mult,100,23)); }