コース一覧
    C言語基礎 関数・配列編
    関数を定義する

    C言語基礎 関数・配列編

    C言語の関数と配列を学び、処理を分割してデータを扱うコースです。

    1
    関数
    01. 関数を定義する15分
    02. 引数と戻り値15分
    03. プロトタイプ宣言15分
    04. void関数15分
    05. 変数のスコープ15分
    06. つくる 関数に分割15分
    07. 第5章クイズ10分
    2
    配列と文字列
    01. 配列15分
    02. 配列とfor15分
    03. 集計15分
    04. 最高点と最低点15分
    05. 文字列(char配列)15分
    06. 文字列関数15分
    07. 文字列の入力15分
    08. つくる 配列で成績管理15分
    09. 第6章クイズ10分

    関数を定義する

    main が縦に伸びていく

    前章までで、点数を読み込み、条件で分けて、人数ぶんループする、というところまで書けるようになりました。ただ、書けることが増えるほど main の中身は縦に伸びていきます。第4章のつくる回で書いたプログラムを思い出すと、入力の部分、集計の部分、表示の部分がひとつづきに並んでいて、どこからどこまでが何の処理なのか、上から順に読まないと分からない状態でした。

    これを整理する道具が 関数 です。まとまった処理に名前を付けて外に出し、main からはその名前を呼ぶだけにします。

    関数の形

    区切り線を出す処理を関数にしてみます。

    c

    int show_line(void) {
        printf("------------------------------\n");
        return 0;
    }

    1行目が関数の入口で、4つの部品でできています。左から順に、戻り値の型 (int)、関数名 (show_line)、引数リスト ((void))、そして波カッコの中が 本体 です。

    引数リストの void は「値を受け取らない」という意味です。C ではカッコの中を空にした () は「引数のことは何も指定しない」という別の意味になってしまうので、受け取らないときは省略せず void と書きます。

    呼び出す

    定義しただけでは何も起きません。main から名前を書いて呼び出します。

    c

    int main(void) {
        show_line();
        printf("成績管理システム\n");
        show_line();
        return 0;
    }

    show_line(); と書いた場所で、いったん実行の流れが関数の中に移ります。本体を最後まで実行するか return に出会うと、呼んだ場所の続きに戻ってきます。同じ処理を2回書く代わりに2回呼べばよいので、あとで線の見た目を変えたくなったときも、直す場所は関数の中の1か所だけです。

    定義はどこに書くか

    今は main より 上 に書いてください。C はソースを上から順に読むので、main の中で show_line を呼ぶ時点で、コンパイラがその名前をまだ知らないとエラーになります。main より下に定義したいときの書き方は、このあとのプロトタイプ宣言の回で扱います。

    戻り値の 0 は何か

    戻り値の型を int と書いたので、本体のどこかで return を書く必要があります。今回の return 0; は、main の最後にある return 0; と同じで「無事に終わりました」という合図です。値そのものに意味はないので、呼び出し側は戻り値を受け取らずに捨てて構いません。

    表示だけして何も返さない関数には、もっと素直な書き方が用意されています。それが void 関数で、この章の後半で扱います。まずは、処理に名前を付けて呼び出す、という感覚をつかみましょう。

    要件

    1. show_line という名前の関数を main より上に定義する
    2. show_line はハイフン30個の行を表示する
    3. main から show_line を2回呼び出す
    4. 1回目と2回目のあいだに 成績管理システム v0.5 を表示する

    ヒント

    引数を受け取らない関数のカッコの中には void と書きます

    戻り値の型を int にしたら、本体のどこかに return 0; が必要です

    ハイフンの数は starterCode のコメントと同じ30個です

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/07

    関連レッスン

    • 引数と戻り値

      値を渡して結果を返す関数を書けるようになります。

    • プロトタイプ宣言

      main より下に関数を書けるようになります。

    • void関数

      値を返さない関数を書けるようになります。

    • 変数のスコープ

      ローカル変数がどこまで見えるか説明できるようになります。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • 処理計算や代入を表す長方形
    • 関数処理に名前を付けて再利用できる単位
    • 戻り値呼び出し元への返答を表す点線矢印
    • 引数位置引数=順番で渡す。
    • リスト順序付きで複数の値を扱うデータ構造
    main.c
    エディタを読み込んでいます

    メモ

    関数を定義する

    ⌘S で保存