C/C++

【C言語】複数の戻り値(return)を返す方法

C/C++

はじめに

まず、C言語の大原則は、以下です。

  • C言語は、複数の戻り値を返すことができない

C言語は、単一の戻り値しか返せないです。

悩んでる人
悩んでる人
  • でも複数返したいときあるんだけど・・・そんなときはどうしたらいいの?

という悩みがあるかと思います。

この記事では、この悩みを解決する方法を解説したいと思います。

C言語で複数の戻り値を返すには?

C言語で複数の戻り値を返すには、以下の方法で実現可能です。

  • メモリの一部に変数を格納するために、アドレス(ポインタ)を定義
  • 関数をCallするときに定義したポインタ変数を引数にして渡す
  • そのアドレスに返したい値を格納する

コード例

以下のコードでは、変数a,bの値を(関数で計算した)加算、減算した値を、addとsubという変数に格納する(返す)というコードを実装してみましょう。

#include <stdio.h>

void cal(int a, int b, int* p1, int* p2);

void main(void) {
      int add = 0;
      int sub = 0;

      cal(10, 2, &add, &sub);

      printf("足し算=%d¥n", add);
      printf("引き算=%d¥n", sub);

}

void cal(int a, int b, int* p1, int* p2) {
      *p1 = a + b;
      *p2 = a - b;
}

コード例の解説

cal関数の第3、4引数に計算結果を渡してもらうポインタを渡します。

これにより、一つの関数で複数の計算結果を得ることが可能です。

月見
月見
  • これで、計算結果が複数になっても得ることができますよね。
  • Returnの必要性ってなんなんでしょう?
  • 筆者の私は、理解できず・・・もし詳しい方がいらっしゃったら教えてください。

コメント

タイトルとURLをコピーしました