【C言語】複数の関数を定義する

【C言語】複数の関数を定義する

関数の基本

C言語における関数は、特定の処理をまとめたブロックであり、コードの再利用性や可読性を向上させるために使用されます。

関数の基本構造

関数の基本的な構造は以下の通りです。


#include <stdio.h>

// 関数の定義
int add(int a, int b) {
    return a + b;
}

int main() {
    int result = add(3, 5);
    printf("3 + 5 = %d\n", result);
    return 0;
}

複数の関数を定義する方法

複数の関数を定義する場合、main関数の外に定義することで、プログラムを整理できます。

例:複数の関数を定義


#include <stdio.h>

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

int square(int x) {
    return x * x;
}

int main() {
    greet();
    printf("4の2乗は %d です\n", square(4));
    return 0;
}

関数プロトタイプの活用

関数の定義をmain関数の後に置く場合、プロトタイプ宣言を使用する必要があります。

関数プロトタイプの例


#include <stdio.h>

void greet();
int square(int x);

int main() {
    greet();
    printf("4の2乗は %d です\n", square(4));
    return 0;
}

// 関数の定義
void greet() {
    printf("こんにちは\n");
}

int square(int x) {
    return x * x;
}

関数の戻り値とvoid関数

関数には戻り値があるものと、ないもの(void関数)があります。

戻り値のある関数


int multiply(int a, int b) {
    return a * b;
}

void関数(戻り値なし)


void printMessage() {
    printf("Hello, world!\n");
}

関数の引数と渡し方

関数の引数には、値渡しと参照渡し(ポインタを使用)が存在します。

値渡しの例


void increment(int x) {
    x++;
    printf("関数内: %d\n", x);
}

int main() {
    int num = 10;
    increment(num);
    printf("関数外: %d\n", num);
    return 0;
}

ポインタを用いた参照渡し


void increment(int *x) {
    (*x)++;
}

int main() {
    int num = 10;
    increment(&num);
    printf("関数外: %d\n", num);
    return 0;
}

変数のスコープと関数

変数のスコープにはローカル変数とグローバル変数があります。

ローカル変数の例


void example() {
    int x = 10;  // このxはこの関数内でのみ有効
}

グローバル変数の例


int count = 0;

void increment() {
    count++;
}

再帰関数の定義

関数が自分自身を呼び出すことで、再帰処理を実現できます。

階乗を求める再帰関数


int factorial(int n) {
    if (n == 0) return 1;
    return n * factorial(n - 1);
}

関数ポインタを活用する

関数ポインタを使うことで、動的に関数を選択できます。

関数ポインタの例


#include <stdio.h>

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

int main() {
    int (*funcPtr)(int, int) = add;
    printf("3 + 5 = %d\n", funcPtr(3, 5));
    return 0;
}

関数を用いたモジュール化

C言語では、複数のファイルに分割して関数を管理することができます。

ヘッダファイルを用いた関数の分割

ファイル構成:

  • math_functions.h – ヘッダファイル
  • math_functions.c – 関数の実装
  • main.c – メインプログラム

math_functions.h


#ifndef MATH_FUNCTIONS_H
#define MATH_FUNCTIONS_H

int add(int a, int b);
int multiply(int a, int b);

#endif

math_functions.c


#include "math_functions.h"

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

int multiply(int a, int b) {
    return a * b;
}

main.c


#include <stdio.h>
#include "math_functions.h"

int main() {
    printf("3 + 5 = %d\n", add(3, 5));
    return 0;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です