
C言語入門|関数の動きを変えるための引数
関数を使い始めたばかりのころ、
多くの人がこんな疑問を持ちます。
「同じ処理だけど、
ちょっとだけ動きを変えたいときって、
関数を何個も作らないといけないの?」
たとえば、
- 朝用の挨拶関数
- 昼用の挨拶関数
- 夜用の挨拶関数
こんなふうに関数を増やしていくと、
プログラムはあっという間に
似たような関数だらけ になってしまいます。
この問題をスマートに解決してくれるのが、
今回のテーマである 引数 です。

引数とは何か
引数とは、
関数を呼び出すときに一緒に渡す値 のことです。
関数は、
- 呼び出される
- 決められた処理を実行する
だけでなく、
- 値を受け取って
- その値に応じて動きを変える
ことができます。
この「受け取る値」が引数です。
引数を使うと何がうれしいのか
引数を使う最大のメリットは、
1つの関数を、いろいろな場面で使い回せる
という点です。
処理の中身は同じでも、
- 表示する内容
- 計算に使う値
- 条件分岐の基準
を引数で変えれば、
関数の振る舞いを自由に調整できます。
引数を使ったシンプルな例
では、引数を使ったサンプルを見てみましょう。
参考コードとは異なる内容にしています。
プロジェクト名:8-6-1 ソースファイル名: sample8-6-1.c
#include <stdio.h>
void showLevel(int level)
{
if (level == 1) {
printf("初級レベルです\n");
} else if (level == 2) {
printf("中級レベルです\n");
} else {
printf("上級レベルです\n");
}
}
int main(void)
{
printf("処理を開始します\n");
showLevel(1);
showLevel(2);
showLevel(3);
printf("処理が終了しました\n");
return 0;
}関数を呼び出す側で何が起きているか
まず、main関数側を見てみましょう。
showLevel(1);
showLevel(2);
showLevel(3);このカッコの中に書かれている数値が、
関数に渡される引数 です。
- 1 を渡す
- 2 を渡す
- 3 を渡す
というように、
同じ関数を呼び出していても、
渡す値によって結果が変わります。
関数を定義する側で何が起きているか
次に、関数定義を見てみましょう。
void showLevel(int level)ここでは、
- int型の変数 level を宣言しています
この level には、
- 呼び出し元で指定された値
が 自動的に代入 されます。
つまり、
| 呼び出し | 関数内の level |
|---|---|
| showLevel(1) | level は 1 |
| showLevel(2) | level は 2 |
| showLevel(3) | level は 3 |
という関係になります。
引数は「関数専用の入口」
引数は、
関数の外と中をつなぐ入口 のような存在です。
- 外(呼び出す側)から値を渡す
- 中(関数の中)で受け取って使う
この仕組みによって、
- 関数は汎用的になる
- 呼び出し側は必要な情報だけを渡せる
という、
とてもきれいな役割分担が実現します。
引数がない関数との違い
以前学んだ、引数なしの関数は、
hello();のように、
カッコの中が空でした。
この () は、
何も渡さない
という意味です。
引数を使う場合でも、
使わない場合でも、
カッコそのものは必ず必要になります。
流れをイメージすると
文章だけだと少し抽象的なので、
イメージで整理してみましょう。
- main関数
→ 数値を渡して関数を呼び出す - showLevel関数
→ 渡された数値を受け取って処理を分岐する
このように、
値が関数に流れ込んで、
その値によって動きが変わる
という構造になっています。
まとめ:引数は関数のスイッチ
ここまでの内容を整理しましょう。
| 項目 | 内容 |
|---|---|
| 引数とは | 関数に渡す値 |
| 役割 | 関数の動きを変える |
| メリット | 関数を使い回せる |
| 受け取り方 | 関数定義のカッコ内で変数として宣言 |
引数は、
関数の動きを切り替えるスイッチ のようなものです。
この考え方が身につくと、
- きれいな関数設計
- 無駄のないコード
- 修正しやすいプログラム
が書けるようになっていきます。
次は、
複数の引数を使う場合 や
型の違いによる引数の扱い
について見ていきましょう 😊
