C言語の戻り値あり・なし関数の違いを完全解説!初心者でも理解できる関数の基本
生徒
「C言語の関数って、戻り値がある関数と無い関数があるって聞いたんですが、どう違うんですか?」
先生
「C言語の関数には、計算結果などを呼び出し元に返す『戻り値あり関数』と、処理だけを行う『戻り値なし関数』があります。」
生徒
「結果を返すかどうかで種類が違うんですね?」
先生
「その通りです。C言語の関数の基本を理解するうえでとても大切な考え方なので、具体例を使いながら丁寧に解説していきます。」
1. C言語の関数とは?
C言語の関数とは、特定の処理をまとめて名前を付けたものです。プログラムの中で同じ処理を何度も書くと、コードが長くなり読みにくくなります。そこで処理を関数としてまとめておくと、必要なときにその関数を呼び出すだけで同じ処理を実行できます。
例えば「画面にメッセージを表示する処理」や「数字を計算する処理」などを関数として作ることで、プログラムが整理されます。このように処理を部品のように分けて作る考え方をプログラムの構造化といいます。
C言語では関数を使うことで、プログラムが読みやすくなり、修正や管理もしやすくなります。プログラミング初心者にとっても、関数の考え方を理解することはとても重要です。
2. 戻り値とは何か
C言語の戻り値とは、関数の処理結果を呼び出し元へ返す値のことです。関数の中で計算した結果や処理の結果を、関数を呼び出した場所へ渡す仕組みです。
例えば、電卓をイメージすると分かりやすいでしょう。電卓に「5+3」を入力すると「8」という結果が表示されます。この「8」が戻り値のようなものです。
C言語では、戻り値を返すときにreturn文を使います。returnとは「戻す」という意味で、関数の処理結果を呼び出し元へ返します。
戻り値がある関数は、計算結果や処理結果を使いたいときに利用されます。一方、処理だけ行えばよい場合は戻り値が無い関数が使われます。
3. 戻り値がある関数の基本
戻り値がある関数は、処理の結果を呼び出し元に返す関数です。例えば「2つの数字を足す関数」などが代表的な例です。
C言語では関数の先頭に戻り値の型を書きます。整数を返す場合はintを使います。
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int main()
{
int result = add(3, 5);
printf("計算結果: %d\n", result);
return 0;
}
このプログラムでは、add関数が2つの数値を足し、その結果をreturnで返しています。そしてmain関数でその結果を受け取り、画面に表示しています。
このように戻り値あり関数は、計算結果を他の処理で利用できるという特徴があります。
計算結果: 8
4. 戻り値がない関数(void関数)
戻り値がない関数は、処理だけを行い結果を返さない関数です。C言語では戻り値が無いことをvoidというキーワードで表します。
例えば「メッセージを表示するだけの処理」などは戻り値が必要ありません。そのためvoid関数として作成します。
#include <stdio.h>
void hello()
{
printf("こんにちは!C言語の関数です。\n");
}
int main()
{
hello();
return 0;
}
この関数は画面にメッセージを表示するだけなので、returnで値を返す必要はありません。そのためvoid関数になっています。
こんにちは!C言語の関数です。
5. 戻り値あり関数と戻り値なし関数の違い
C言語の関数には「戻り値あり」と「戻り値なし」の2つの種類があります。この違いはとてもシンプルで、処理結果を返すかどうかです。
戻り値あり関数は計算結果などを返します。例えば数値計算や判定処理などです。一方、戻り値なし関数は画面表示やデータの出力など、結果を返す必要がない処理に向いています。
つまり、関数の目的によって使い分けるのがポイントです。プログラムを設計するときに「この処理は結果を返す必要があるか」を考えると判断しやすくなります。
6. 戻り値あり関数の別の例(計算関数)
戻り値あり関数は計算処理と相性が良いです。次は数値を2倍にする関数の例を見てみましょう。
#include <stdio.h>
int doubleNumber(int num)
{
return num * 2;
}
int main()
{
int value = doubleNumber(10);
printf("2倍の値: %d\n", value);
return 0;
}
このプログラムではdoubleNumber関数が数値を2倍にして、その結果を戻り値として返しています。呼び出し元ではその結果を受け取って表示しています。
2倍の値: 20
7. 戻り値なし関数の別の例(表示処理)
戻り値なし関数は、画面表示などの処理をまとめるときに便利です。次の例では、指定した名前を表示する関数を作っています。
#include <stdio.h>
void printName(char name[])
{
printf("名前は%sです。\n", name);
}
int main()
{
printName("田中");
return 0;
}
この関数は名前を画面に表示するだけなので、戻り値を返す必要がありません。そのためvoid関数として定義されています。
名前は田中です。
8. 初心者が覚えておきたい関数設計の考え方
C言語の関数を理解するためには、「処理だけ行うのか」「結果を返す必要があるのか」を考えることが大切です。
例えば計算処理なら戻り値あり関数、画面表示なら戻り値なし関数と考えると分かりやすくなります。このように役割を分けて関数を作ることで、プログラムは整理され読みやすくなります。
また関数を小さく分けることで、プログラムの修正や再利用も簡単になります。C言語の関数はプログラムを作るうえで非常に重要な基本要素なので、戻り値あり関数と戻り値なし関数の違いをしっかり理解しておきましょう。
まとめ
ここまで、C言語の関数の基本として「戻り値あり関数」と「戻り値なし関数」の違いについて詳しく学びました。C言語のプログラミングを理解するうえで、関数という考え方は非常に重要な要素です。特に初心者の段階では、関数の役割と戻り値の仕組みをしっかり理解しておくことで、プログラム全体の構造が見えやすくなります。
C言語の関数とは、特定の処理をひとまとめにして名前を付けたプログラムの部品のようなものです。同じ処理を何度も書くのではなく、関数として定義しておくことで、必要なときに呼び出すだけで処理を実行できます。この仕組みによって、プログラムは読みやすく整理され、修正や管理もしやすくなります。
そしてC言語の関数には大きく分けて二つの種類があります。それが「戻り値あり関数」と「戻り値なし関数」です。この違いはとてもシンプルで、処理の結果を呼び出し元へ返すかどうかという点にあります。
戻り値あり関数の特徴
戻り値あり関数は、関数の中で計算した結果や処理の結果を呼び出し元へ返す関数です。例えば、数値の計算、条件の判定、データの処理などでは、その結果を他の処理で使うことが多いため、戻り値あり関数が使われます。
C言語では、戻り値を返すときにreturn文を使います。また関数の先頭には、返す値の型を書く必要があります。整数を返す場合はint型、少数ならdouble型など、戻り値の型を明確にすることでプログラムの安全性も高まります。
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int main()
{
int result;
result = add(10, 20);
printf("計算結果は%dです。\n", result);
return 0;
}
この例では、add関数が二つの整数を足し算して、その結果をreturn文で返しています。main関数ではその値を受け取り、printf関数を使って画面に表示しています。戻り値あり関数を使うことで、計算結果を他の処理でも再利用できるようになります。
計算結果は30です。
戻り値なし関数(void関数)の特徴
一方、戻り値なし関数は処理だけを行う関数です。C言語では戻り値が無いことをvoidというキーワードで表します。void関数は、結果を返す必要がない処理でよく使われます。
例えば、画面にメッセージを表示する処理や、ログを出力する処理などは戻り値が不要なことが多いです。このような処理はvoid関数として作ると、プログラムが分かりやすくなります。
#include <stdio.h>
void showMessage()
{
printf("C言語の関数を勉強しています。\n");
}
int main()
{
showMessage();
return 0;
}
このプログラムでは、showMessage関数が画面にメッセージを表示するだけの処理を行っています。戻り値が必要ないため、void関数として定義されています。
C言語の関数を勉強しています。
戻り値あり関数と戻り値なし関数の使い分け
C言語で関数を設計するときは「この処理は結果を返す必要があるのか」を考えることが重要です。もし処理結果を別の処理で使う必要がある場合は、戻り値あり関数を使います。逆に処理だけを行えばよい場合は、戻り値なし関数を使います。
例えば、数値の計算処理、最大値の取得、データの判定などは戻り値あり関数が向いています。一方、画面表示、メッセージ出力、ログ表示などは戻り値なし関数が向いています。
このように関数の役割を分けて設計することで、プログラムの構造が整理され、読みやすいコードを書くことができます。プログラミング初心者が成長するためには、このような関数設計の考え方を早い段階で身につけることがとても大切です。
関数を使うメリットの整理
C言語で関数を使う最大のメリットは、プログラムを部品化できることです。処理を関数として分けることで、同じコードを何度も書く必要がなくなります。また、プログラムの見通しも良くなり、エラーの発見や修正も簡単になります。
さらに関数をうまく使えば、処理を再利用することもできます。大きなプログラムでは、複数の関数を組み合わせて一つのシステムを作ることになります。そのため、戻り値あり関数と戻り値なし関数の違いを理解しておくことは、C言語プログラミングの基礎力を高めるうえで非常に重要です。
初心者のうちは「関数は処理の部品」「戻り値は処理結果を返す仕組み」と覚えておくと理解しやすくなります。これらの基本をしっかり身につけることで、より複雑なプログラムにも対応できるようになります。
生徒
「C言語の関数には戻り値あり関数と戻り値なし関数があるんですね。処理結果を返すかどうかで違うんですね。」
先生
「その通りです。戻り値あり関数は計算結果や処理結果を呼び出し元へ返します。C言語ではreturn文を使って値を返します。」
生徒
「例えば足し算の関数や数値を計算する関数は、戻り値あり関数になりますよね。」
先生
「はい。計算処理や判定処理では戻り値あり関数がよく使われます。一方で画面表示などは戻り値が不要なのでvoid関数になります。」
生徒
「つまり、結果を使うなら戻り値あり関数、処理だけなら戻り値なし関数ということですね。」
先生
「とても良い理解です。C言語のプログラムを書くときは、関数の役割を考えて使い分けることが大切です。関数を上手に使えるようになると、プログラムはとても読みやすくなります。」
生徒
「関数を使うとプログラムが整理されて、再利用もしやすくなるんですね。C言語の基本としてしっかり覚えておきます。」
先生
「その意識がとても大切です。戻り値あり関数と戻り値なし関数の違いを理解できれば、関数設計の基礎が身についたと言えるでしょう。これからさらに多くのプログラムを書きながら、関数の使い方を深く学んでいきましょう。」