#include double func1(double x) // f(x) = x を返す関数 { printf("# func1(% g) is called", x); return x; } double func2(double x) // f(x) = x^2 を返す関数 { printf("# func2(% g) is called", x); return x*x; } double func_p(double (*f)(double), double x) // 関数引数を用いるようにしたサブルーチン { double y; y = f(x); printf(" in func_p().\n"); return y; } int main(void) { printf("func1(1) = % g\n", func_p(func1,1)); // func1 を指定して func_p を呼び出す printf("func2(2) = % g\n", func_p(func2,2)); // func2 を指定して func_p を呼び出す return 0; }