C言語

【C言語】第5章第2回:関数の定義と呼び出し

関数の定義と呼び出し方を理解することで、プログラムの効率と構造を改善できます。この章では、基礎から応用までを詳しく解説します。

1. 関数の定義

1.1 関数の基本構造

関数の定義には、以下の要素が含まれます:

  • 戻り値の型:関数が返すデータの型を指定します。
  • 関数名:関数を識別する名前を付けます。
  • 引数リスト:関数に渡す値を指定します。
  • 本体:関数が実行する処理を記述します。

一般的な構造:

return_type function_name(parameter_list) {
    // 関数の処理内容
    return value; // 必要に応じて値を返す
}

1.2 実際の例

例:2つの整数を足す関数

#include <stdio.h>

// 関数の宣言
int add(int a, int b);

int main() {
    int sum = add(10, 20); // 関数を呼び出して結果を変数に格納
    printf("Sum: %d\n", sum);
    return 0;
}

// 関数の定義
int add(int a, int b) {
    return a + b; // 2つの整数の合計を返す
}

ポイント:

  • 関数を定義する際、必ず戻り値の型を指定します。
  • 関数の名前は意味のある名前を付けると可読性が向上します。
  • 関数の宣言(プロトタイプ宣言)は、main関数より前に記述します。

2. 関数の呼び出し

2.1 基本的な呼び出し方法

関数を呼び出す際は、関数名と引数を指定します。

例:関数呼び出しの基本

#include <stdio.h>

void greet() {
    printf("Hello, World!\n");
}

int main() {
    greet(); // 関数の呼び出し
    return 0;
}

2.2 戻り値を利用する関数の呼び出し

例:平方値を計算する関数

#include <stdio.h>

// 関数の宣言
int square(int num);

int main() {
    int result = square(4); // 関数を呼び出して戻り値を変数に格納
    printf("Square: %d\n", result);
    return 0;
}

// 関数の定義
int square(int num) {
    return num * num; // 平方値を返す
}

ポイント:戻り値を利用する場合、関数の返す値を必ず変数に格納するか使用してください。

3. 関数の応用例

3.1 計算機プログラム

例:足し算、引き算、掛け算、割り算を行う計算機プログラム

#include <stdio.h>

// 各演算の関数を定義
int add(int a, int b) { return a + b; }
int subtract(int a, int b) { return a - b; }
int multiply(int a, int b) { return a * b; }
int divide(int a, int b) { return b != 0 ? a / b : 0; }

int main() {
    int a = 20, b = 10;
    printf("Add: %d\n", add(a, b));
    printf("Subtract: %d\n", subtract(a, b));
    printf("Multiply: %d\n", multiply(a, b));
    printf("Divide: %d\n", divide(a, b));
    return 0;
}

ポイント:演算の種類ごとに関数を作成することで、コードの見通しが良くなります。

4. 練習問題

以下の課題に挑戦して、関数の定義と呼び出し方を実践的に学びましょう。

  1. 引数として受け取った整数が偶数か奇数かを判定する関数を作成してください。
  2. 3つの整数を受け取り、その中で最も大きな値を返す関数を作成してください。
  3. 文字列を逆順に表示する関数を作成してください。

5. 練習問題の解答と解説

問1の解答

#include <stdio.h>

// 偶数か奇数かを判定する関数
void checkEvenOdd(int num) {
    if (num % 2 == 0) {
        printf("%d is even.\n", num);
    } else {
        printf("%d is odd.\n", num);
    }
}

int main() {
    checkEvenOdd(7);
    checkEvenOdd(10);
    return 0;
}

この関数は、渡された整数が偶数か奇数かを判定して出力します。

6. まとめ

関数を正しく定義し、適切に呼び出すことで、プログラムの再利用性と効率が向上します。次回は、引数や戻り値の応用的な活用法を学びます。