
C言語入門|関数に複数の値を渡す
引数を1つ使えるようになると、
関数はぐっと便利になりましたよね。
でも、プログラムを書いていると、
こんな場面にすぐ出会います。
「うーん、この処理、
値を2つ同時に渡せたら一気に楽になるのに……」
安心してください。
関数には、引数を2つ以上渡すことができます。
ここからは、
関数をさらにパワーアップさせる
複数引数の使い方 を見ていきましょう。

引数は何個でも渡せる
C言語の関数では、
- 引数は1つだけ
- 引数は整数だけ
といった制限はありません。
必要であれば、
- 2つ
- 3つ
- それ以上
の値をまとめて関数に渡せます。
これができるようになると、
関数は「ちょっとした処理」から
実用的な部品 へと進化します。
複数の引数を使った例
では、サンプルを見てみましょう。
参考コードとは内容を変えています。
プロジェクト名:8-7-1 ソースファイル名: sample8-7-1.c
#include <stdio.h>
void showRange(int start, int end)
{
printf("範囲は %d から %d までです\n", start, end);
}
int main(void)
{
int min = 10;
int max = 50;
showRange(min, max);
showRange(100, 200);
return 0;
}関数呼び出し側の書き方
複数の引数を渡す場合、
呼び出し側では次のように書きます。
showRange(min, max);ポイントはとてもシンプルです。
- 引数はカンマで区切る。
- 左から順に渡される。」
この例では、
| 呼び出し時の指定 | 渡される値 |
|---|---|
| min | 10 |
| max | 50 |
という形で、
2つの値が関数に送られています。
関数定義側の書き方
次に、関数を定義する側を見てみましょう。
void showRange(int start, int end)ここでもポイントは同じです。
- 型 変数名 を並べる
- カンマで区切る
関数が呼び出されると、
- 1番目の値 → start
- 2番目の値 → end
という対応関係で、
自動的に代入されます。
引数の対応関係を表で整理
複数引数は、
順番がとても重要 です。
| 呼び出し時 | 関数内 |
|---|---|
| showRange(10, 50) | start = 10 |
| end = 50 |
もし順番を逆にすると、
showRange(50, 10);関数内では、
- start が 50
- end が 10
となり、
意味がまったく変わってしまいます。
型と数が合わないとどうなるか
引数にはルールがあります。
- 数が合っているか
- 型が一致しているか
このどちらかが崩れると、
コンパイルエラーになります。
たとえば、次のようなケースです。
void funcA(int x, int y)
{
}
int main(void)
{
funcA(100);
}この場合、
- 受け取る引数は2つ
- 渡している値は1つ
となるため、
正しく対応できずエラーになります。
また、型が違う場合も同様です。
流れ考えるとこうなる
複数の引数は、
箱が横に並んでいる と考えるとわかりやすいです。
- 1つ目の箱 → 1つ目の値
- 2つ目の箱 → 2つ目の値
呼び出す側は、
その箱の並びを意識して値を渡す必要があります。
引数のある関数の基本構文
ここで、改めて構文を整理しておきましょう。
引数のある関数の定義
void 関数名(型 引数名, 型 引数名)
{
処理内容
}引数のある関数の呼び出し
関数名(値, 値);関数定義の1行目を見るだけで、
- 引数の数
- 引数の型
- 呼び出し方
がすべてわかるようになっています。
関数の1行目は「取扱説明書」
関数定義の1行目は、
関数を使う人へのメッセージです。
- この関数は何という名前か
- どんな値を何個渡せばよいか
これがすべて表明されています。
だからこそ、
- 引数の順番
- 引数の意味
- 名前のわかりやすさ
がとても重要になります。
まとめ:複数引数で関数は一気に実用的になる
最後にポイントを整理しましょう。
| 項目 | 内容 |
|---|---|
| 引数は | 複数渡せる |
| 区切り方 | カンマで区切る |
| 対応関係 | 順番で決まる |
| 注意点 | 型と数を揃える |
複数の引数を使えるようになると、
関数は「便利な道具」から
本格的な部品 へと変わります。
次は、
引数を使って 値を返す関数 や
計算結果を受け取る方法 に進んでいきましょう 😊
