1つの関数から2つの値を引き出す

諸事情によりポインタ使って関数から二つの値を返ってくるようにしました。連立方程式を解いてるんでしょうがない。両方一辺に動かさないといけないんで。
関数っていうのは、ある入力に対して1つの出力を返すように出来てる都合上、複数の返り値を手に入れることは出来ないので、その辺はポインタを使うらしい。実際の数学の場合だと一対一対応の写像だけが関数となる訳ではないので、この辺は計算機に特殊な事情に違いない。多分こういうのは全射とかいった気がする。単射だっけ。一対一対応が全単射だっけ。

void hoge (double a, double b, double *A, double *B);
int main () {
  double a, b, c, d;

  hoge (a, b, &c, &d);
  return 0;
}
void hoge (double a, double b, double *A, double *B) {
  ...
  *A = ...; *B = ...;
}

とかやります。
main文の中でアドレスを渡すことでhogeという関数からcとdの値を手に入れることが出来ます。
あんまし美しいやり方ではないと思うんだけど仕方ない。そして結果は前やったのと同じだったので間違えはないらしいことが分かった。ので、これからまた進歩させます。