C言語学習ポータル(無料版) 学習コンテンツ 関数とスコープ 引数と戻り値

🧩 関数とスコープ

引数と戻り値

無料公開版に収録・読む目安 12分

🎯 引数で値を受け取り、returnで結果を返す関数を書ける

自動販売機を思い浮かべてください。お金を入れる(渡す)と、ジュースが出てくる(返る)。関数もこれと同じで、入口と出口を持てます。入口が引数、出口が戻り値です。

#include <stdio.h>

// 2つの整数を受け取り、その合計を返す
int add(int a, int b)
{
    return a + b;
}

int main(void)
{
    int x = add(2, 3);
    printf("%d\n", x);        // 5
    printf("%d\n", add(x, 10));  // 15
    return 0;
}

int add(int a, int b) の読み方はこうです。先頭の int が「この関数は int を返す」、カッコの中が「int をふたつ受け取り、関数の中では a と b という名前で使う」。呼び出し側の add(2, 3) の 2 と 3 を実引数、受け取る側の a と b を仮引数と呼びます。仮引数は関数の中だけで使える変数です。

return は2つの仕事を同時にします。値を返すことと、その場で関数を終わらせることです。return の後ろに書いた処理は絶対に実行されません。

引数は何個でも書ける

引数はカンマで区切って何個でも並べられます。ただし型は1つずつ書く決まりで、int add(int a, b) のような省略はできません。引数が増えるほど呼び出し側は順番を間違えやすくなるので、3〜4個までを目安にすると読みやすさを保てます。

戻せる値は1つだけ

return で返せる値は1つだけです。「商と余りを両方返したい」という場面では足りません。この不便さを解決する道具が第2部のポインタと第3部の構造体ですが、いまは「1つしか返せない」と覚えておけば十分です。

戻り値をその場で使う

戻り値は変数に入れてもよいし、上の例のように printf の引数にそのまま渡してもかまいません。関数呼び出しは、実行が終わると「その値そのもの」に化けると考えると読みやすくなります。

#include <stdio.h>

double circle_area(double r)
{
    return 3.14159 * r * r;
}

int main(void)
{
    printf("%.2f\n", circle_area(2.0));   // 12.57
    return 0;
}

罠・注意

ビット「何を渡して、何が返るか」を先に決めてから中身を書くと、迷わないよ

引数と戻り値がはっきりしている関数は、あとから別のプログラムに持っていってもそのまま動きます。部品として再利用できるかどうかは、この入口と出口の設計で決まります。

まとめ: 引数は入口、戻り値は出口。return は「値を返して、即終了」。この2つが決まれば、関数の設計はほぼ終わりです。

要点まとめ

アプリで演習問題まで解く(無料・登録不要)

この項目に出てくる用語

引数ひきすう

関数を呼び出すときに渡す値のこと。関数の中ではその値を使って処理を行う、外から中への入力口としての役割を果たす。渡す引数の順番や型は、関数側の仮引数の並びに合わせる必要がある。

戻り値もどりち

関数が処理を終えたときに、呼び出し元へ返す結果の値のこと。returnというキーワードを使って、その値を指定する。戻り値の型は関数の宣言部分(int func(...)のintの部分)で決まる。

変数へんすう

値を入れておくための名前付きの箱のこと。名前をつけることで中身を自由に出し入れできる、プログラムの記憶場所にあたる。変数名は自由に付けられるが、意味の分かる名前にすると読みやすいコードになる。

同じトラックのほかの項目

関数とは——処理に名前を付ける関数の役割と基本の書き方が分かり、自分で作った関数を呼び出せる プロトタイプ宣言プロトタイプ宣言の役割を理解し、関数を好きな順番で書けるようになる 変数のスコープ——見える範囲ブロックごとのスコープを理解し、変数がどこから見えるか判断できる 変数の寿命とstatic自動変数とstatic変数の寿命の違いを説明でき、使い分けられる コールスタック——関数呼び出しの舞台裏関数呼び出しでスタックフレームが積まれ、戻るときに降ろされる流れを説明できる 値渡しの本質引数はコピーが渡ることを理解し、関数内の変更が呼び出し元に届かない理由を説明できる グローバル変数との付き合い方グローバル変数の性質と危険を理解し、使いどころを判断できる 関数分割の設計センス1関数1仕事の原則で、長い処理を読みやすい関数に分けられる 再帰の入口——自分を呼ぶ関数再帰の2要素(停止条件と縮小)を理解し、階乗を再帰で書ける
‹ 関数とは——処理に名前を付ける プロトタイプ宣言 ›

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH