引数と戻り値

さて、ある程度引数が解ってきたところで、
引数と戻り値を組み合わせる応用をやってみましょう。
よく使われるので必ず覚えてください。

例えば、変数に商品の価格を代入し、それに消費税を加えたいとします。
一番簡単な方法は下のようなやり方です。

#include <stdio.h>

int main()
{
  int kakaku;
  int zeikomi;

  printf("商品価格を入力してください。 : ");
  scanf("%d",&kakaku);
  zeikomi=kakaku*105/100;
  printf("税込みの価格は%d円です。\n",zeikomi);
  return 0;
}

1.05を掛けるのではなく、105を掛け、100で割っているのは、整数演算にするためです。
int型の変数が整数しか表せないということを思い出してください。

さて、上のプログラム、複数の変数で同じことをする場合、同じ式を複数書きます。
しかし、税率が変更したなどの理由で式を変更しなければならない時は、
全ての式を変更しなければなりません。

こういったときに関数というものが真の価値を発揮します。
まず、下のソースを見てください。

01:#include <stdio.h>
02:
03:int GetZeikomi(int k)
04:{
05: return k*105/100;
06:}
07:
08:int main()
09:{
10:  int kakaku;
11:  int zeikomi;
12:
13:  printf("商品価格を入力してください。 : ");
14:  scanf("%d",&kakaku);
15:  zeikomi=GetZeikomi(kakaku);
16:  printf("税込みの価格は%d円です。\n",zeikomi);
17:  return 0;
18:}

これまでに無かった表記が15行目にありますね。
この文の処理の流れは、下のようになっています。

1)GetZeikomi関数を、変数kakakuを実引数として付け、呼び出す。
2)実引数の値を受け取った仮引数kに105を掛け、100で割ったものを戻り値として返す。
3)変数zeikomiがGetZeikomi関数の戻り値を受け取る。

結局のところ、変数zeikomiに変数kakakuの1.05倍の数値が入るわけですが、
それだけを聞くと一番最初のやり方とあまり変わりませんね。
では、二つの大きな違いについて説明しましょう。

すでに述べたとおり、直接式を書くプログラムでは、
計算方法が変わった場合(税率の変化等)全ての式を変更する必要があります。
しかし、関数の戻り値を利用する場合、計算をする関数の中を変更するだけですみます。

とまあ、これは引数と戻り値を利用するほんの一例に過ぎませんが、
これから先、引数と戻り値なしにはプログラムが書きにくくなります。
利用例を見ながらじっくりと学んでいきましょう。