C言語の関数の定義と呼び出し。引数・戻り値の仕組みを図解。
int add(int a, int b) { return a + b; }void 戻り値と void 引数f(x) = 2x + 1 を思い出してください。f(3) と書くと → x に 3 を入れて計算 → 7 が出てくるf(10) と書くと → x に 10 を入れて計算 → 21 が出てくる
// 数学: f(x) = 2x + 1 int f(int x) { return 2 * x + 1; } int main(void) { printf("%d\n", f(3)); // → 7 printf("%d\n", f(10)); // → 21 return 0; }
f(x) が関数、Cの int f(int x) も関数。呼び方(f(3))も意味(「xに3を入れる」)も同じ。| 数学の用語 | Cの用語 | 例 |
|---|---|---|
| 関数名 | 関数名 | f, add, sqrt |
| 変数(引数) 独立変数 | 引数(パラメータ) | f(x) の x |
| 関数の値 従属変数 | 戻り値(返り値) | f(3) = 7 の 7 |
| 定義式 | 関数の本体 | { return 2*x + 1; } |
| 代入 | 引数渡し | f(3) = 「x=3 として計算」 |
// 数学: g(x, y) = x + y int add(int a, int b) { return a + b; } // add(3, 5) は g(3, 5) と同じ → 8 を返す
intaddg と同じint a, int breturn a+b;f(x) = 2x + 1 の x は実数でも整数でも勝手に動きますが、C では入力も出力も型を明示する必要があります。int f(int x) は「整数を受け取って整数を返す」専用。小数を渡すなら double f(double x) と書き分けます。
void hello(void) { // 戻り値なし (void) printf("Hello!\n"); // 画面に出す「副作用」 }
void は「値を返さない」という意味。数学にはない概念です。
f(3) はいつ計算しても 7。でも C の関数は毎回違う値を返すことがあります。
int r = rand(); // 呼ぶたびに違う乱数 int n = getchar(); // 毎回ユーザー入力 time_t t = time(NULL); // 現在時刻外部状態(乱数シード・標準入力・システム時刻)に依存するためです。
void change(int x) { x = 100; } // 中でxを100にしても int main(void) { int a = 5; change(a); printf("%d\n", a); // → 5(呼び出し元は変わらない) }この挙動を変えたいときは「ポインタ」を使います(後の講座)。
int get_year(void) { // void は「引数なし」 return 2026; }外部から値を取ってきたり、固定値を返す用途で使います。
| 変数名 | スコープ | 値 |
|---|
max 関数を min に書き換えsum3(a, b, c) を作るdouble に変えて小数も扱うこの講座の理解度をチェックしましょう!
void は「空」を意味し、戻り値がないことを示します。return文を省略できます。
関数定義で受け取る変数を「仮引数(パラメータ)」、呼び出し時に渡す値を「実引数(アーギュメント)」と呼びます。
関数内で宣言した変数は「ローカル変数」で、その関数の中でのみ有効です。