C言語の関数定義と呼び出しを完全ガイド!初心者でも分かる基本の書き方
生徒
「C言語の関数って何ですか?難しそうなイメージがあります…。」
先生
「関数は、プログラムの中で使える小さな道具みたいなものです。ひとつの仕事をまとめて実行できます。」
生徒
「道具ってどういうことですか?」
先生
「例えば、電卓の“足し算ボタン”は押すだけで計算できますよね。C言語でも同じように、決まった処理を関数にまとめて呼び出せます。」
1. 関数とは?
C言語の関数とは、ひとつの処理をまとめて名前を付けたものです。 プログラムの中で何度も使う処理を関数にしておくと、同じ命令を何度も書かずに済み、 コード全体がすっきりして読みやすくなります。 初心者のうちは、長いプログラムを見るだけで混乱しがちですが、 関数を使うことで「何をしているプログラムなのか」を整理して考えられるようになります。
関数は「入力を受け取る」「中で処理する」「必要なら結果を返す」という流れを持っています。 これは日常生活で言えば、自動販売機や電子レンジのようなものです。 ボタンを押すと、内部で決まった動きが行われ、結果が出てきます。 C言語の関数も同じで、呼び出すだけで中の処理が実行されます。
#include <stdio.h>
void greet(void)
{
printf("こんにちは\n");
}
int main(void)
{
greet();
greet();
return 0;
}
このサンプルでは、greetという関数を作り、挨拶を表示しています。
greet();と書くだけで同じ表示を何度でも実行できるため、
同じ処理を繰り返す場合にとても便利です。
このように関数は、処理を部品のようにまとめて使える仕組みであり、
C言語を理解するうえで最初に身に付けたい大切な考え方です。
2. 関数の定義とは?
関数を使うには、まず「関数の定義」を書きます。関数の定義とは、これから作る道具に 名前を付けて、「どんな材料(入力)を受け取り」「どんな結果(戻り値)を返すか」 そして「中でどんな処理をするか」をまとめて決めることです。 レシピに例えるなら、料理名が関数名、材料が入力、完成品が戻り値、作り方が処理の中身になります。 最初に定義しておくと、同じ処理をいろいろな場所から呼び出して使えるようになります。
int add(int a, int b)
{
return a + b;
}
この例では、addという名前の関数を定義しています。
丸かっこの中のint aとint bは、関数が受け取る二つの整数です。
そしてreturn a + b;で合計を返すので、「足し算をする道具」ができたと考えると分かりやすいです。
関数の定義は、基本的に戻り値の型→関数名→入力→処理の順で書く、
という形を覚えるとC言語の関数がぐっと読みやすくなります。
void sayHello(void)
{
printf("はじめまして\n");
}
こちらは「表示するだけ」の関数の定義例です。結果を返さない場合はvoidを使い、
入力がないときは(void)と書くと「何も受け取らない関数」だと明確になります。
このように、関数の定義を読めるようになると、C言語のプログラム全体の流れも追いやすくなります。
3. 関数の呼び出しとは?
関数は定義しただけでは動きません。実際に使うには「関数の呼び出し」を行います。
呼び出しとは、作っておいた関数名を書いて、必要なら値を渡し、その処理を実行してもらうことです。
イメージとしては、道具箱に入っている道具を取り出して使う感じです。
C言語では、関数名(値);の形で書くのが基本になります。
また、関数が計算結果などを返す場合は、その戻ってきた値を変数に入れて利用できます。 こうしておくと、同じ処理を何度でも呼び出せるので、プログラムの中身を短く保ちやすくなります。 初心者のうちは「呼び出したら、関数の中へ一度移動して処理をして、終わったら元の場所に戻ってくる」 という流れを頭の中で追うと理解しやすいです。
int result;
result = add(3, 5);
printf("%d\n", result);
add(3, 5)の部分が関数の呼び出しです。ここで3と5が引数として渡され、
関数の中で足し算が行われ、合計の値が戻り値として返ってきます。
そして、その結果をresultに入れてから表示しています。
「計算する担当は関数、結果を受け取る担当は変数」という役割分担を意識すると、
C言語の関数呼び出しがぐっと分かりやすくなります。
printf("%d\n", add(10, 20));
もう少し短く書くなら、このように呼び出しの結果をそのままprintfへ渡す方法もあります。
まずは分かりやすい形で変数に受け取り、慣れてきたら短い書き方にも挑戦すると、
関数の使い方が自然に身に付いていきます。
4. main関数との関係
C言語のプログラムは、必ずmain関数からスタートします。main関数は「プログラムの入口」です。その中で他の関数を呼び出すことで、動きを作っていきます。
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int main(void)
{
int answer;
answer = add(10, 20);
printf("結果:%d\n", answer);
return 0;
}
5. 戻り値とは?
戻り値とは、関数が処理した結果をmain関数などへ戻す値のことです。関数定義の先頭に書く型が戻り値の型になります。戻り値がない場合は、voidと書きます。
void hello()
{
printf("こんにちは\n");
}
この関数は、文字を表示するだけなので結果を返しません。そのため、voidが使われます。
6. 引数とは?
引数とは、関数へ渡す値のことです。「材料」と考えると理解しやすいです。ケーキを作るなら、小麦粉や砂糖などが必要です。同じように、関数に必要なデータを引数として渡します。
int square(int x)
{
return x * x;
}
square(5)のように使うと、5がxに入り、処理されて25が返ります。
7. 複数の関数を使ったプログラム例
複数の関数を作ると、さらにプログラムが整理されます。処理を小分けにでき、初心者でも読みやすい構造を作れます。
#include <stdio.h>
void hello()
{
printf("ようこそC言語へ\n");
}
int add(int a, int b)
{
return a + b;
}
int main(void)
{
hello();
int n = add(4, 6);
printf("%d\n", n);
return 0;
}
8. 同じ処理を何度も書かないための関数
関数を使う最大の理由は、同じ処理を何度も書かなくてよくなることです。例えば、挨拶を10回表示するとします。関数なしで書くと同じ行が並んで読みづらくなりますが、関数でまとめれば非常にすっきりします。メンテナンスも簡単で、修正が必要なときは関数の中身を直すだけで済みます。
9. 関数名の付け方のコツ
関数名は役割が分かる名前にするのがポイントです。例えば、足し算ならadd、平均ならaverage、表示だけならprintなど、動きを連想できる名前にすると読みやすいコードになります。初心者がつまずきやすいポイントですが、名前の付け方はとても大切な技術です。
10. 関数を使うとプログラムが整理される
関数を使うことで、プログラムが短くなり、見た目も綺麗になります。部品を作って組み立てるように設計できるので、複雑なアプリケーションも理解しやすくなります。C言語の基本構文の中でも、関数は特に重要な部分です。