#include #include int doub(int); int trip(int); int half(int); void fpv_exec(int (**)(int), int); int doub(int i) { return i * 2; } int trip(int i) { return i * 3; } int half(int i) { return i / 2; } static int (*fpv[])(int) = {doub, trip, half, NULL}; void fpv_exec(int (**fpv)(int), int n) { int i; for (i = 0; *(fpv + i) != NULL; i++) { printf("%d\n", (*(fpv + i))(n)); } } int main(int argc, char **argv) { int i; for (i = 1; i < argc; i++) { fpv_exec(fpv, atoi(argv[i])); } exit(EXIT_SUCCESS); }