表紙 <戻 進> i-mobile

   関数に数値を渡す   

  1. 第1項:引数を持つ関数
  2. 第2項:関数に数値を渡す
  3. 第3項:複数の引数

[1]引数を持つ関数

前項で、sum関数を作り、1〜100の合計の計算を部品化しました。
しかし、1〜100の合計しか計算できないのでは不便です。
もっと自由な範囲の合計の計算ができたほうが便利です。

このような時のために、関数に情報(数値)を渡すことができます。
そのための仕組みが、引数と呼ばれる仕組みです。
引数を使うと、関数に数値を渡すことができます。


[  引数  ]
関数に渡す情報の総称
引数は、関数の()の中に書いて指定する必要があります。
前項で作成したsum関数では、引数はvoidとなっていました。
このvoidは、引数を使わない時に指定します。

引数を使う場合、()の中には、渡された数値を格納する変数を宣言します。
sum関数でint型の変数maxに数値を格納する場合、次の通りにします。


int sum(int max);
このように、使用する変数を指定する部分を仮引数と呼びます。

[  仮引数  ]
関数宣言に書かれた引数の型と名前のこと。
関数を変更した場合、プロトタイプ宣言も同様にする必要がありますが、
プロトタイプ宣言では変数を省略して型だけでも構いません。
次のプログラムは、sum関数を引数を受け取るように改造した例です。

#include <stdio.h>

int sum(int);	/* プロトタイプ宣言 */

int main(void)
{
	return 0;
}

int sum(int max)
{
	printf("%d\n",(1 + max) * max / 2);
	return 0;
}
引数に指定した変数は、その関数内で普通の変数と同じように使用できます。

目次に戻る


[2]関数に数値を渡す

引数を持つ関数を呼び出す場合、数値を渡す必要があります。
それには、呼び出す時に、()の中に数値を書き込みます。
次のプログラムは、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;
}
このプログラムの実行結果は次のようになります。

1275
これは、sum関数を呼び出す時に指定した50という数値が、
sum関数の仮引数である変数maxに代入されているのです。
当然、sum関数を呼び出す時の数値を変更すると、表示結果も変わります。

引数つきの関数を呼び出す場合、必ず数値を渡さなくてはいけません。
例えば、次のようにしてsum関数を呼び出すとエラーとなります。


sum();

目次に戻る


[3]複数の引数

i-mobile
引数は、何もひとつだけに限定されているわけではありません。
必要とあれば、好きなだけの引数を持つ関数を作ることができます。

sum関数を、min〜maxの合計値を求める関数にするには、
引数を2つに増やし、中身の式を入れ替えることで実現できます。
次の関数は、min〜maxの合計を求めるよう改造した例です。


int sum(int min,int max)
{
	printf("%d\n",(min + max) * (max - min + 1) / 2);
	return 0;
}
複数の引数を使う場合、それぞれを,で区切って指定します。
ここでは両方にint型を使っていますが、別の型を混ぜても問題ありません。

この関数を呼び出す場合にも、数値を,で区切って指定します。
実引数と仮引数は、並べられている順番どおりに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
なお、プロトタイプ宣言も修正しています。
また、複数の引数を持つ関数では、全ての引数に数値を渡さないと呼び出せません。

目次に戻る



<−前に戻る  先頭に戻る  次へ進む−>