2

重複の可能性:
関数から複数の値を返す

スタックに 2 つの値を返すことで点に行き詰まりました。私の仕事は、複素数を計算するプログラムを書くことです。すべてが順調ですが、1つだけです。数値を除算する関数で、2つのケースを作成したい:

  1. 除算する数値が 0 に等しくない場合は、除算して結果を 1 つの値として返します。
  2. number を EQUALS 0 で割った場合、2 つの値を返します。

複素数の場合、構造体 (二重の実数と二重の虚数) を使用します。私が使用する関数は、複素数構造の型です。関数 return では、1 つの値しか返すことができません。分割前と同じ量の数字をスタックに持つようにするには、どうすれば2番目のものを返すことができますか? ポインターを使用する必要があることはわかっていますが、ここでそれらを使用する方法がまだわかりません。

4

1 に答える 1

6

既に複素数の構造体 (これを と呼びますcomplex) があるので、次のインスタンスを返すだけで済みます。

struct one_or_two_complexes { 
     int howmany; 
     struct complex first; 
     struct complex second; 
};

それが良いアイデアかどうかは、おそらく呼び出し元がそれをどのように使用するかによって異なります

呼び出し元が除数がゼロでないことを確実に知っている場合は、単に と書くことができcomplex result = your_function(a,b).first;ます。これは素晴らしいことです。

呼び出し元が確信が持てず、それがゼロかどうかに応じて何か違うことをしたい場合は、関数呼び出しの結果を の独自のインスタンスに格納してone_or_two_complexesからチェックするhowmanyか、チェックすることができます渡された除数がゼロであるかどうかに関係なく、さまざまなケースで異なる方法で関数を呼び出します。

于 2013-01-03T18:23:10.533 に答える