前項で、sum関数を作り、1〜100の合計の計算を部品化しました。
しかし、1〜100の合計しか計算できないのでは不便です。
もっと自由な範囲の合計の計算ができたほうが便利です。
このような時のために、関数に情報(数値)を渡すことができます。
そのための仕組みが、引数と呼ばれる仕組みです。
引数を使うと、関数に数値を渡すことができます。
引数は、関数の()の中に書いて指定する必要があります。
[ 引数 ]
関数に渡す情報の総称
引数を使う場合、()の中には、渡された数値を格納する変数を宣言します。
sum関数でint型の変数maxに数値を格納する場合、次の通りにします。
このように、使用する変数を指定する部分を仮引数と呼びます。int sum(int max);
関数を変更した場合、プロトタイプ宣言も同様にする必要がありますが、
[ 仮引数 ]
関数宣言に書かれた引数の型と名前のこと。
引数に指定した変数は、その関数内で普通の変数と同じように使用できます。#include <stdio.h> int sum(int); /* プロトタイプ宣言 */ int main(void) { return 0; } int sum(int max) { printf("%d\n",(1 + max) * max / 2); return 0; }
引数を持つ関数を呼び出す場合、数値を渡す必要があります。
それには、呼び出す時に、()の中に数値を書き込みます。
次のプログラムは、sum関数に50という数値を渡す例です。
なお、関数に渡す数値のことを、実引数と呼ぶことがあります。
[ 実引数 ]
関数を呼び出す時に渡す数値のこと。
このプログラムの実行結果は次のようになります。#include <stdio.h> int sum(int); /* プロトタイプ宣言 */ int main(void) { sum(50); /* 50を渡している */ return 0; } int sum(int max) { printf("%d\n",(1 + max) * max / 2); return 0; }
これは、sum関数を呼び出す時に指定した50という数値が、
1275
引数つきの関数を呼び出す場合、必ず数値を渡さなくてはいけません。
例えば、次のようにしてsum関数を呼び出すとエラーとなります。
sum();
引数は、何もひとつだけに限定されているわけではありません。
必要とあれば、好きなだけの引数を持つ関数を作ることができます。
sum関数を、min〜maxの合計値を求める関数にするには、
引数を2つに増やし、中身の式を入れ替えることで実現できます。
次の関数は、min〜maxの合計を求めるよう改造した例です。
複数の引数を使う場合、それぞれを,で区切って指定します。int sum(int min,int max) { printf("%d\n",(min + max) * (max - min + 1) / 2); return 0; }
この関数を呼び出す場合にも、数値を,で区切って指定します。
実引数と仮引数は、並べられている順番どおりに1対1で対応します。
次のプログラムは、改良したsum関数を呼び出す例です。
このプログラムの実行結果は次のようになります。#include <stdio.h> int sum(int,int); /* プロトタイプ宣言 */ int main(void) { sum(50,100); return 0; } int sum(int min,int max) { printf("%d\n",(min + max) * (max - min + 1) / 2); return 0; }
なお、プロトタイプ宣言も修正しています。
3825