-1

したがって、doubleの配列へのポインターがあります。必要なのは、配列内の次の場所に移動するためのポインター演算ですが、これを行う方法に関する適切なドキュメントは見つかりません。

これは私の現在の行です。温度配列は次のようなポインタ配列であることに注意してください。double *temperaturesArray = new double[daysToPrompt];

cout << setw(10)<< counter + 1 << setw(10) << temperaturesArray + counter << "\370C" <<setw(10) << getFahrenheit(temperaturesArray + counter) <<"\370F"<< endl;
4

3 に答える 3

2

ポインタ演算を書く必要はありません。[]演算子を使用して配列にインデックスを付けるだけです。

cout << setw(10)<< counter + 1
     << setw(10) << temperaturesArray[ counter ] << "\370C"
     <<setw(10) << getFahrenheit(temperaturesArray[ counter ]) <<"\370F"
     << endl;

これは、ある時点を含めて、ループ内に入ります++ counter

これは、配列(およびのような同様の構造std::vector)が最も一般的に使用される方法です。

編集:ある時点で、教師が「ポインタ演算」を使用するための任意の要件を与えた場合、2つのオプションがあります。

  • temperaturesArray[ counter ]に直接変換される*( temperaturesArray + counter)ため、明示的な方法ではなく、すでにポインタ演算を使用していることに注意してください。counter[ temperaturesArray ]これを教師に示すために行うこともできます。

  • ++ temperaturesArrayの代わりに書き込み、またはの代わりに++ counter使用します。ただし、これは悪いプログラミング手法です。怠惰な先生に何をすべきか、なぜそうするのかを教えていないことを恥じることも悪い考えです。temperaturesArray[0]*temperaturesArraytemperaturesArray[counter]

于 2013-03-27T02:13:56.827 に答える
1

正しい配列要素はtemperaturesArray + counter、コードにあるとおりです。残念ながら、それは単なるポインタです。印刷のため、またはポインターではなくdoubleが必要な場合はいつでも、ポインターを逆参照する必要があります

cout << setw(10) << counter + 1 << setw(10) << *(temperaturesArray + counter) << "\370C" << setw(10) << getFahrenheit(*(temperaturesArray + counter)) << "\370F" << endl;

ただし、これは直感に反します。この割り当てを通過したら、配列にインデックスを付けるだけです;-)。

cout << setw(10) << counter + 1 << setw(10) << temperaturesArray[counter] << "\370C" << setw(10) << getFahrenheit(temperaturesArray[counter]) << "\370F" << endl;

まともなC++の本でポインターの間接参照を調べてください。そこにあるはずです。

于 2013-03-27T02:24:01.173 に答える
0

悲しいことにポインタ演算を使用する必要があります

次に、

temperaturesArray[ counter ]

で置き換えることができます

*(temperaturesArray + counter )

アレイの場合、これらは機能的に同じです。

于 2013-03-27T03:28:59.880 に答える