#include #include void run_thing(int (*f)(int)){ printf("f(10) = %d\n", f(10)); printf("f(29) = %d\n", f(29)); } int square(int x){ return x*x; } int add5(int x){ return x+5; } // The lazy alternative that works just fine //void* return_random(){ int (*return_random())(int){ if(random() % 2) return square; return add5; } void main(){ run_thing(square); run_thing(add5); printf("Let's run a random one!\n"); run_thing(return_random()); run_thing(return_random()); run_thing(return_random()); run_thing(return_random()); run_thing(return_random()); run_thing(return_random()); run_thing(return_random()); run_thing(return_random()); run_thing(return_random()); run_thing(return_random()); }