今回は、「三つの整数の最大値を求める」関数を作成しよう。
三つの整数の最大値を求める
//三つの整数の最大値を求める
#include <stdio.h>
//三つの整数の最大値を返す関数
int max3(int a,int b,int c)
{
int max = a;
if (b > max) max = b;
if (c > max) max = c;
return max;
}
int main(void)
{
int a,b,c;
puts("三つの整数を入力してください。");
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
printf("整数c:"); scanf("%d",&c);
printf("最大値は%dです。\n",max3(a,b,c));
return 0;
}
実行結果
三つの整数を入力してください。
整数a:5
整数b:3
整数c:4
最大値は5です。
関数を使う際には、「関数呼び出し」が行われる。
関数呼び出しが行われると、プログラムの流れは、その関数へ移る。
main関数の実行が一時的に中断して、関数max3の実行が開始する。
呼び出された関数では、仮引数用の変数が生成されて、実引数の値が代入される。
→関数max3を呼び出す際に、main関数で宣言されたa、b、cの値が実引数として渡されて、それぞれが関数max3の仮引数a、b、cに代入される。
なお、本プログラムの場合は、関数max3の仮引数a、b、cと、main関数の変数a、b、cは名前が同じだが、それぞれ別個のものである。
仮引数への値の代入が完了すると、関数本体が実行される。
そして、プログラムの流れがreturn文に出会うか、関数本体の末尾の}に到達すると、その関数から抜け出して、呼び出された場所へ戻る。
その返却値は、関数呼び出し式の評価によって得られる。
→関数max3の返却値5がprintf関数に渡されて、その値が表示される。
なお、関数は2個以上の値の返却は行えない。
(参考)新・解きながら学ぶC言語 第2版 柴田望洋 (監修・著), 由梨かおる(著)SBクリエイティブ
コメント