#include double ptr_avesub(double *, double *, double *); /* プロトタイプ宣言 */ int main() { double a, b, c, ave; printf("3つ値を入力してください:\n"); scanf("%lf%lf%lf", &a, &b, &c); printf("入力された値: %.2f %.2f %.2f\n", a, b, c); ave = ptr_avesub( &a, &b, &c ); /* 関数の呼び出し */ /* main側の変数を関数の中で変更させるには、関数にアドレスを渡して 変数のありかを知らせる必要がある */ printf("平均(%.2f)からの差分: %+.2f %+.2f %+.2f\n", ave, a, b, c); return 0; } /* 平均を計算して戻り値とするとともに、ポインタ渡しされた値も平均からの差分に書き換える関数。 */ /* 仮引数の名前は、対応がとれていれば何でもよい */ double ptr_avesub(double *a, double *b, double *c) { double ave; ave = (*a + *b + *c)/3.0; *a -= ave; *b -= ave; *c -= ave; return ave; }