見出し画像

No.20 関数について(1)

今回は、C言語の関数について解説します。

前回の記事をまだ見ていない方は、下記のリンクからぜひ見てください。
前回の記事を見てからこの記事を見ると理解しやすいです。↓

また、わからない点があればぜひコメントお願いします。
わかりやすいように更新させていただきます。


関数とは?

関数を一言で表すと、「特定の処理をまとめた、名前の付いたコードの塊」です。何かデータ(引数)を入れると、中で処理が行われて結果(戻り値)が出てくる物と考えてください。

例えば、電卓で考えてみましょう。「足し算」ボタンを押すと、入力した 2 つの数字を足して結果を表示します。この「足し算」という機能が、プログラミングにおける関数に相当します。

関数のイメージ

なぜ関数を使うのか

関数を使うことには、以下のような多くのメリットがあります。↓

  • コードの整理: 複雑な処理を小さな関数に分割することで、コード全体がすっきりと見やすくなります。

  • 再利用性: 同じ処理を何度も書く必要がなくなります。関数を一度定義すれば、必要な場所で何度でも呼び出すことができます。

  • 保守性: コードの修正や変更が容易になります。問題が発生した場合でも、該当の関数だけを修正すれば済みます。

  • 可読性: コードの意図が明確になり、他の人が読んでも理解しやすくなります。

関数の書き方

C言語における関数の書き方は以下の通りです。↓

戻り値の型 関数名(引数1の型 引数1の名前, 引数2の型 引数2の名前, ...) {
    // 処理
    return 戻り値;
}

それぞれの要素について解説します。

  • 戻り値の型: 関数が処理を行った結果として返す値の型を指定します。例えば、整数を返す場合は int、小数点を返す場合は floatなどを指定します。何も返さない場合は voidと記述します。

  • 関数名: 関数に付ける名前です。処理の内容が分かりやすい名前を付けるように心掛けましょう。

  • 引数: 関数に渡すデータです。必要な場合は、型と名前を指定します。引数が不要な場合は (  ) の中に何も記述しません。

  • 処理: 関数が行う具体的な処理を記述します。

  • return 戻り値;: 関数が呼び出し元に返す値を指定します。戻り値がない場合は return; と記述します。

関数の呼び出し方

定義した関数は、他の場所から名前を指定して呼び出すことができます。
次のプログラムは、指定した関数を呼び出すときの書き方です。↓

関数名(引数1, 引数2, ...);

引数がある場合は、定義時に指定した型と一致する値を渡します。戻り値がある場合は、その値を変数に格納したり、直接使用したりできます。

関数の例

次のプログラムは、2つの整数の和を計算するプログラミングです。↓

#include <stdio.h>

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

int main() {
    int x = 5;
    int y = 3;
    int result = add(x, y); // add関数を使う
    printf("%d + %d = %d\n", x, y, result); // 出力: 5 + 3 = 8
    return 0;
}

この例では、add という関数が2つの整数 a と b を受け取り、それらの和を計算して返しています。main 関数では、add 関数を呼び出して結果を表示しています

基本は main 関数の前に自分が作った関数を定義します。
そうしないとバグなどが起こる可能性があります。

引数と戻り値について

  • 引数: 関数に渡すデータ(入力)。関数内で処理に利用される。

  • 戻り値: 関数が処理を行った結果として返す値(出力)。関数の呼び出し元で利用できる。

先程の例を考えてみましょう。この関数は、足す数と足される数の2つの数値が必要です。この2つの数値が引数となります。↓

int add(int a, int b) { // aとbが引数
    return a + b;
}

int main() {
    int x = 5;
    int y = 3;
    int sum = add(x, y); // xとyを引数としてadd関数に渡している
    printf("%d\n", sum); // 8が出力される
    return 0;
}

引数の種類

  • 仮引数(かりひきすう): 関数定義時に記述する引数のことです。上記の例では、add 関数の a と b が仮引数です。

  • 実引数(じつひきすう): 関数呼び出し時に実際に渡す値のことです。上記の例では、add(x, y) の x と y が実引数です。

複数の引数の場合

関数は複数の引数を受け取ることができます。引数はカンマ(,)で区切って記述します。↓

void print_values(int x, char c, float f) {
    printf("int: %d, char: %c, float: %f\n", x, c, f);
}

int main() {
    print_values(10, 'A', 3.14f); // 3つの引数を渡している
    return 0;
}

引数がない場合

関数によっては、引数を必要としない場合もあります。その場合は、引数リストを空にします。

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

int main() {
    print_message(); // 引数なし
    return 0;
}

戻り値がない場合

関数によっては、値を返す必要がない場合もあります。その場合は、戻り値の型を void とします。

void print_message() { // 戻り値がないのでvoid
    printf("Hello, world!\n");
    return; // return文は省略可能
}

void 型の関数では、return 文を省略することができます。return; と記述することもできますが、その場合は関数を途中で終了させる意味になります。

今回は以上です。

いいなと思ったら応援しよう!