プログラミング

C言語超入門⑤ 関数で処理を分けよう

関数の定義、引数、戻り値、プロトタイプ宣言、変数の有効範囲を初心者向けに説明します。

第5回では、長くなった処理を関数に分けます。関数を使うと、コードの目的が分かりやすくなり、同じ処理を何度も呼び出せます。

この回でできるようになること

  • 自分で関数を作る
  • 引数で値を渡す
  • 戻り値を受け取る
  • プロトタイプ宣言の役割を知る

戻り値のない関数

#include <stdio.h>

void greet(void) {
    printf("こんにちは\n");
}

int main(void) {
    greet();
    greet();
    return 0;
}

voidは「返す値がない」という意味です。関数を使うことを呼び出すといいます。

引数で値を渡す

関数へ渡す値を引数と呼びます。

void showScore(int score) {
    printf("点数は%d点です\n", score);
}

int main(void) {
    showScore(80);
    showScore(95);
    return 0;
}

同じ関数でも、渡す値によって表示内容を変えられます。

戻り値を受け取る

関数が呼び出し元へ返す値を戻り値と呼びます。

int add(int a, int b) {
    return a + b;
}

int main(void) {
    int answer = add(7, 5);
    printf("答えは%dです\n", answer);
    return 0;
}

関数名の前のintは「この関数がint型の値を返す」という意味です。

プロトタイプ宣言

関数をmainより後ろに書く場合は、先に関数の形を知らせます。

#include <stdio.h>

int add(int a, int b);

int main(void) {
    printf("%d\n", add(3, 4));
    return 0;
}

int add(int a, int b) {
    return a + b;
}

上にあるint add(int a, int b);プロトタイプ宣言です。

変数を使える範囲

関数や波かっこの中で作った変数は、基本的にその中だけで使えます。この範囲をスコープと呼びます。

void example(void) {
    int number = 10;
    printf("%d\n", number);
}

numberはexampleの外から直接使えません。必要な値は引数や戻り値で受け渡すと、関係が追いやすくなります。

練習してみよう

2つの整数を受け取り、大きい方を返すmax関数を作ってみましょう。

模範解答

#include <stdio.h>

int max(int a, int b) {
    if (a >= b) {
        return a;
    }
    return b;
}

int main(void) {
    printf("%d\n", max(12, 7));
    return 0;
}

解説

aがb以上ならaを返します。returnが実行されると関数は終了するため、条件に当てはまらない場合だけ最後のreturn bへ進みます。同じ値の場合はaを返します。

この回のまとめ

  • 関数は処理をひとまとめにする仕組み
  • 引数で関数へ値を渡せる
  • returnで呼び出し元へ値を返せる
  • 関数を後ろに書く場合はプロトタイプ宣言を使う

前の回 / 次の回:配列と文字列

← 記事一覧へ戻る