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で呼び出し元へ値を返せる
- 関数を後ろに書く場合はプロトタイプ宣言を使う