はじめに
まず、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の必要性ってなんなんでしょう?
- 筆者の私は、理解できず・・・もし詳しい方がいらっしゃったら教えてください。
コメント