質問: %d \n", (*pD)(x, y)); } } else { printf("error \n"); return -1; } return 0; } int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; } int mul(int a, int b) { return a * b; } int divi(int a, int b) { return a / b; } ```
回答: 関数を途中で抜けるには、 返却値の無い void 型の関数の場合、return; で、返却値をつけずに抜け出ます。 返却値のある 関数の場合、return 1; などの数値等の返却値をつけて抜け出ます。 int add(int a, int b) { return a + b; } の場合、a + b の部分が数値等になります。 int max(int a, int b) { if ( a > b) return a; return b; } の様に複数個所で、抜け出せる様にしてかまいません。 プログラムを途中で正常終了させるのは、 exit 関数を使います。 exit(0); とか exit(1); とか main関数内で return する時と同じ効果があります。 異常終了させる場合は、abort を使いますが、 確保したメモリや、開いたファイルの後処理などしないかもしれないので、 普通は使わないほうが良いと思われます。