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