2つのベクトルの内積を行い、その結果を表示する必要があります。私が学んだことから、C++でできることは、結果のベクトル(ポインタ)のアドレスを返すことです。別の関数で返された配列ポインタを使用する
// Dot product.
double * dot(double u[3], double v[3]) {
double result[3];
result[0] = u[0] * v[0];
result[1] = u[1] * v[1];
result[2] = u[2] * v[2];
return result;
私は、結果を印刷する必要があるので、私はポインタを受け取り、別の機能があります:
void pvec(double * ptr) {
cout << "[" << *(ptr + 0) <<", " << *(ptr + 1) << ", " << *(ptr + 2) << "]\n";
}
これは動作しませんが、私は現在、このコードでいることをやっています。結果の値はすべてゴミです。
どうすればこの作品を作成できますか? Pythonから来て、私は本当に腕や足がないような機能を介して配列を渡すことができないと思っています。ポインタゲームを正しくプレイすることはできません。
void dot(double u[3], double v[3], double result[3])
とそれにコードの残りの部分を調整します
関数 'dot'はローカルオブジェクトへのポインタを返します。逆参照されたときの動作は未定義です。 –
さらに、**はポインタゲームをプレイしません**。 C++でやってください。 –
結果を静的 'static double result [3];にするか、動的(より良い)' double * result = new double [3];を割り当てることができ、 'delete [] ptr'が不要ならば解放することができます。ライブデモについてはhttps://ideone.com/FU8L0Iをご覧ください。 – kwarnke