カテゴリ: C++ 更新日: 2026/04/05

C++関数の戻り値とvoid型を徹底解説!初心者向けプログラミング入門

関数の戻り値とvoid型の使い方
関数の戻り値とvoid型の使い方

先生と生徒の会話形式で理解しよう

生徒

「C++でプログラムを作っていると『戻り値』とか『void』っていう言葉が出てくるんですけど、これってどういう意味なんですか?」

先生

「良い視点ですね。関数というのは『何かを頼んで、結果を返してもらう』仕組みのことです。その『返ってくる結果』が戻り値で、『何も返さない』ときに使うのがvoid型なんですよ。」

生徒

「料理を注文して、料理が出てくるのが戻り値、みたいな感じでしょうか?」

先生

「まさにその通りです!それでは、具体的な使い方や書き方を詳しく見ていきましょう!」

1. C++の関数と戻り値の基本を知ろう

1. C++の関数と戻り値の基本を知ろう
1. C++の関数と戻り値の基本を知ろう

プログラミングにおける関数(かんすう)とは、特定の処理をひとまとめにした「部品」のようなものです。パソコンを触ったことがない方でも、「自動販売機」を想像すると分かりやすいでしょう。お金を入れてボタンを押すと、飲み物が出てきますよね。この「飲み物」がプログラミングで言うところの戻り値(もどりち)です。

戻り値とは、関数が実行された後に、その関数を呼び出した側に返されるデータのことを指します。C++では、関数を作る際に「この関数はどんな種類のデータを返すのか」をあらかじめ決めておく必要があります。これを型(かた)と呼びます。例えば、整数を返すならint、小数を返すならdoubleといった具合です。戻り値を活用することで、計算結果を次の処理に利用したり、プログラムの動きを柔軟に変えたりすることができるようになります。

2. void型とは?「返さない」という選択肢

2. void型とは?「返さない」という選択肢
2. void型とは?「返さない」という選択肢

一方で、すべての関数が結果を返すわけではありません。例えば、画面に文字を表示するだけの処理や、スピーカーから音を鳴らすだけの処理などは、特に呼び出し元に報告する「結果」が必要ない場合があります。このように「戻り値がない」状態を表すために使われるのがvoid(ボイド)型です。

voidという英単語には「空っぽ」や「無効」という意味があります。プログラミングにおいてvoidと書かれた関数は、「この処理は実行するだけで、何も値は返しませんよ」という宣言になります。初心者のうちは、何か計算をさせたいときは戻り値ありの型を使い、単にメッセージを出したいときなどはvoid型を使う、と覚えておくとスムーズです。

3. 戻り値がある関数の書き方とreturn命令

3. 戻り値がある関数の書き方とreturn命令
3. 戻り値がある関数の書き方とreturn命令

戻り値がある関数を作るには、関数の名前の前に「返すデータの型」を書き、関数の中身の最後にreturn(リターン)という命令を書きます。returnは「この値を返して、ここで関数を終了します」という合図になります。

まずは、2つの数字を足し算して、その合計を返す簡単なプログラムを見てみましょう。ここでは整数を扱うので、型にはint(イント)を使います。intは「Integer(インテジャー)」の略で、整数という意味の専門用語です。


#include <iostream>

// 2つの整数を受け取って、足し算の結果を「戻り値」として返す関数
int addNumbers(int a, int b) {
    int sum = a + b;
    return sum; // ここで結果を返している
}

int main() {
    int result = addNumbers(5, 3); // 関数を呼び出して戻り値を受け取る
    std::cout << "合計は: " << result << std::endl;
    return 0;
}

合計は: 8

このコードでは、addNumbersという関数が「8」という結果を戻り値として返し、それを変数resultに保存して画面に表示しています。

4. void型関数の具体的な使い方とメリット

4. void型関数の具体的な使い方とメリット
4. void型関数の具体的な使い方とメリット

次に、戻り値を返さないvoid型関数の書き方を確認しましょう。void関数の場合は、returnを書く必要はありません(途中で終了させるために書くこともありますが、基本的には省略します)。

例えば、挨拶を画面に表示するだけの関数を考えてみましょう。画面に文字を出すという動作そのものが目的なので、計算結果を返す必要はありません。このような場合にvoidは非常に便利です。プログラムが整理され、どこで何が行われているのかが分かりやすくなるというメリットがあります。


#include <iostream>

// 挨拶を表示するだけの関数(戻り値がないのでvoid型)
void showHello() {
    std::cout << "こんにちは!C++の世界へようこそ。" << std::endl;
    std::cout << "この関数は値を返さず、表示だけを行います。" << std::endl;
}

int main() {
    showHello(); // 関数を呼び出すだけ
    return 0;
}

こんにちは!C++の世界へようこそ。
この関数は値を返さず、表示だけを行います。

この例では、関数を呼び出すだけで画面にメッセージが表示されます。受け取るべき戻り値がないため、int result = ...のように変数に代入する書き方はしません。

5. 引数と戻り値の組み合わせで表現を広げる

5. 引数と戻り値の組み合わせで表現を広げる
5. 引数と戻り値の組み合わせで表現を広げる

関数をより強力にするのが、引数(ひきすう)との組み合わせです。引数とは、関数に渡す「材料」のことです。材料(引数)を渡して、加工してもらい、結果(戻り値)を受け取る。これがプログラミングの基本サイクルです。

例えば、入力された年齢に応じて「お酒が飲めるかどうか」を判定するプログラムを考えてみましょう。判定結果として、文字(std::string型)を返すようにします。ここで使うstd::stringは、文字の並びを扱うための型です。パソコンに詳しくない方は「文章を入れる箱」だと考えてください。


#include <iostream>
#include <string>

// 年齢を受け取って、判定メッセージを戻り値として返す関数
std::string checkAge(int age) {
    if (age >= 20) {
        return "お酒が購入可能です。";
    } else {
        return "未成年はお酒を購入できません。";
    }
}

int main() {
    int myAge = 18;
    // 関数の戻り値をそのまま出力に使うこともできます
    std::cout << "判定結果: " << checkAge(myAge) << std::endl;
    return 0;
}

判定結果: 未成年はお酒を購入できません。

このように、戻り値を使うことで、関数の中で決まった判断をさせて、その結果をメッセージとして受け取ることが可能になります。

6. 実践例:消費税計算を関数で行う

6. 実践例:消費税計算を関数で行う
6. 実践例:消費税計算を関数で行う

より実用的な例として、商品の価格を受け取って、10%の消費税を加えた金額を計算する関数を作ってみましょう。金額には小数が出る可能性があるので、今回はdouble(ダブル)型を使います。doubleは、小数点以下の細かい数字を扱える型のことです。

プログラミングでは、計算式を直接書くよりも、このように関数としてまとめておくことで、後から「税率が8%に変わった」というときでも、一箇所を直すだけで済むようになります。これを再利用性保守性の向上と呼びます。


#include <iostream>

// 税込み価格を計算して戻り値として返す関数
double calculateTax(int price) {
    double taxRate = 1.1; // 10%の税率
    return price * taxRate;
}

int main() {
    int itemPrice = 1000;
    double finalPrice = calculateTax(itemPrice);
    
    std::cout << "商品の価格: " << itemPrice << "円" << std::endl;
    std::cout << "税込み価格: " << finalPrice << "円" << std::endl;
    
    return 0;
}

商品の価格: 1000円
税込み価格: 1100円

戻り値をdoubleにすることで、正確な計算結果を受け取ることができています。もしここをvoidにしてしまうと、計算した結果を呼び出し元(main関数)に伝えることができず、不便になってしまいます。

7. 戻り値とvoidを使い分けるポイント

7. 戻り値とvoidを使い分けるポイント
7. 戻り値とvoidを使い分けるポイント

初心者が迷いやすいのが「いつ戻り値ありにして、いつvoidにするべきか」という点です。基準はシンプルに考えましょう。「その関数が終わった後に、その結果を使って別のことをしたいか?」と自分に問いかけてみてください。

  • 戻り値あり: 計算した数値を使ってさらに別の計算をしたい、判定した結果によって次の動きを変えたい、名前を取得して別の場所に表示したい。
  • void型: とにかく画面に文字を出して終わりたい、設定を一つ変更して終わりたい、スピーカーから警告音を鳴らしたい。

このように、「やりっぱなし」でいいのか「報告が必要」なのかで区別すると、関数の設計がとても楽になります。C++の関数の仕組みは、最初こそ難しく感じるかもしれませんが、一度マスターすれば魔法の道具のように便利なプログラムを次々と生み出せるようになりますよ。

カテゴリの一覧へ
新着記事
New1
C++
C++の値渡し(pass by value)とは?仕組みと使い方を初心者向けに徹底解説
New2
C++
C++とポインタ・参照の重要性をやさしく解説!初心者でも理解できる仕組みと使い方
New3
C++
GCCでC++開発を始める方法!初心者向け完全ガイド
New4
Rust
Rustの式(Expression)と文(Statement)の違いを徹底解説!初心者が迷うセミコロンの秘密
人気記事
No.1
Java&Spring記事人気No1
C言語
C言語を学ぶ初心者におすすめの環境構築手順【2025年版】
No.2
Java&Spring記事人気No2
C++
MinGWとMSYS2でWindowsにC++環境を構築する方法を徹底解説!初心者でもできるセットアップガイド
No.3
Java&Spring記事人気No3
C言語
LinuxでC言語開発環境を構築する方法【GCCとMakefileの基本】
No.4
Java&Spring記事人気No4
C言語
C言語のソースコードとヘッダファイルの役割とは?初心者向けにわかりやすく解説!
No.5
Java&Spring記事人気No5
C言語
C言語開発でよく使われるエディタとIDEランキング【初心者向け完全ガイド】
No.6
Java&Spring記事人気No6
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.7
Java&Spring記事人気No7
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.8
Java&Spring記事人気No8
C言語
C言語のデータ型まとめ(int,float,char,double)初心者でもわかる入門ガイド