関数に数値を渡す
引数を持つ関数
前項で、sum関数を作り、1~100の合計の計算を部品化しました。
しかし、1~100の合計しか計算できないのでは不便です。
もっと自由な範囲の合計の計算ができたほうが便利です。
このような時のために、関数に情報(数値)を渡すことができます。
そのための仕組みが、引数と呼ばれる仕組みです。
引数を使うと、関数に数値を渡すことができます。
関数に渡す情報の総称
引数は、関数の()の中に書いて指定する必要があります。
前項で作成したsum関数では、引数はvoidとなっていました。
このvoidは、引数を使わない時に指定します。
引数を使う場合、()の中には、渡された数値を格納する変数を宣言します。
sum関数でint型の変数maxに数値を格納する場合、次の通りにします。
このように、使用する変数を指定する部分を仮引数と呼びます。
関数宣言に書かれた引数の型と名前のこと。
関数を変更した場合、プロトタイプ宣言も同様にする必要がありますが、
プロトタイプ宣言では変数を省略して型だけでも構いません。
次のプログラムは、sum関数を引数を受け取るように改造した例です。
引数に指定した変数は、その関数内で普通の変数と同じように使用できます。
しかし、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;
}
引数に指定した変数は、その関数内で普通の変数と同じように使用できます。
関数に数値を渡す
引数を持つ関数を呼び出す場合、数値を渡す必要があります。
それには、呼び出す時に、()の中に数値を書き込みます。
次のプログラムは、sum関数に50という数値を渡す例です。
なお、関数に渡す数値のことを、実引数と呼ぶことがあります。
関数を呼び出す時に渡す数値のこと。
このプログラムの実行結果は次のようになります。
これは、sum関数を呼び出す時に指定した50という数値が、
sum関数の仮引数である変数maxに代入されているのです。
当然、sum関数を呼び出す時の数値を変更すると、表示結果も変わります。
引数つきの関数を呼び出す場合、必ず数値を渡さなくてはいけません。
たとえば、次のようにしてsum関数を呼び出すとエラーとなります。
それには、呼び出す時に、()の中に数値を書き込みます。
次のプログラムは、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();
複数の引数
引数は、何もひとつだけに限定されているわけではありません。
必要とあれば、好きなだけの引数を持つ関数を作ることができます。
sum関数を、min~maxの合計値を求める関数にするには、
引数を2つに増やし、中身の式を入れ替えることで実現できます。
次の関数は、min~maxの合計を求めるよう改造した例です。
複数の引数を使う場合、それぞれを,で区切って指定します。
ここでは両方にint型を使っていますが、別の型を混ぜても問題ありません。
この関数を呼び出す場合にも、数値を,で区切って指定します。
実引数と仮引数は、並べられている順番どおりに1対1で対応します。
次のプログラムは、改良したsum関数を呼び出す例です。
このプログラムの実行結果は次のようになります。
なお、プロトタイプ宣言も修正しています。
また、複数の引数を持つ関数では、すべての引数に数値を渡さないと呼び出せません。
必要とあれば、好きなだけの引数を持つ関数を作ることができます。
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
なお、プロトタイプ宣言も修正しています。
また、複数の引数を持つ関数では、すべての引数に数値を渡さないと呼び出せません。
本サイトについて
苦しんで覚えるC言語(苦C)はC言語入門サイトの決定版です。
C言語の基本機能を体系立てて解説しており、
市販書籍と同等以上の完成度です。




