No.21 関数について(2)
今回は、C言語の関数について解説します。
前回の記事をまだ見ていない方は、下記のリンクからぜひ見てください。
前回の記事を見てからこの記事を見ると理解しやすいです。↓
また、わからない点があればぜひコメントお願いします。
わかりやすいように更新させていただきます。
プロトタイプ宣言について
前回関数について解説したときに、基本的に関数の定義は main関数より前にする必要があると書きましたが、main関数よりあとに関数を定義する場合は「プロトタイプ宣言」というものをする必要があります。
プロトタイプ宣言とは
C言語のプログラムでは、関数を使う前に、その関数についてコンパイラにあらかじめ教える必要があります。この「教える」作業が、プロトタイプ宣言です。
なぜプロトタイプ宣言が必要なのか
コンパイラーが関数について理解する
関数の名前、受け取る引数の数と型、返す値の型などを事前に知ることで、コンパイラーはプログラム全体を正しく翻訳できます。
エラーの早期発見
関数の呼び出し方が間違っていたり、引数の数が合わなかったりした場合、コンパイル時にエラーとして検出できます。
プログラムの可読性向上
プログラムの最初にプロトタイプ宣言をまとめて書くことで、どの関数があるのかが一目で分かり、プログラムの構造を把握しやすくなります。
プロトタイプ宣言の書き方
プロトタイプ宣言は次のように書きます。↓
戻り値の型 関数名(引数の型 引数名, ...);
戻り値の型: 関数が返す値の型(int, double, voidなど)
関数名: 関数の名前
引数の型: 関数に渡す引数の型
引数名: 引数の名前(省略可)
例
int 型の変数 x , y を引数として受け渡し、戻り値の型が int型の関数 add のプロトタイプ宣言。↓
int add(int x, int y); // int型の2つの値を受け取って、int型の値を返すadd関数
プロトタイプ宣言の場所
通常、プロトタイプ宣言は、main関数よりも前に記述します。
問題
与えられた整数が偶数か奇数かを判定する関数を作成してください。
#include <stdio.h>
int is_even(int num) {
// ここに偶数か奇数かを判定する処理を記述してください
}
int main() {
int number = 15;
if (is_even(number)) {
printf("%d は偶数です。\n", number);
} else {
printf("%d は奇数です。\n", number);
}
return 0;
}
回答例
#include <stdio.h>
int is_even(int num) {
return num % 2 == 0;
}
int main() {
int number = 15;
if (is_even(number)) {
printf("%d は偶数です。\n", number);
} else {
printf("%d は奇数です。\n", number);
}
return 0;
}
解説
is_even関数:
引数: 整数num
戻り値: numが偶数の場合は1(真)、奇数の場合は0(偽)
処理:
numを2で割った余りを計算し、それが0であれば偶数、0以外であれば奇数と判定する。
C言語では、真の場合は1、偽の場合は0として扱うため、条件式num % 2 == 0の結果をそのまま返している。
main関数:
変数numberに任意の整数値を代入する。
is_even関数にnumberを渡し、その戻り値によって偶数か奇数かを判断する。
if文で条件分岐を行い、結果を出力する。
今回は以上です。