int twice (int (*p)(int), int v) { return ((*p)(v) + (*p)(v)); } int f1 (int x) { return (x+2); } main() { printf("%d\n",twice(f1,3)); } // Result: 10