我需要做兩個向量的點積然後顯示結果。從我所瞭解到的情況來看,我能用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,我真的覺得無法通過函數傳遞數組就像沒有手臂或腿,我不能設法玩指針遊戲的權利。
函數'dot'返回一個指向本地對象的指針。解除引用時,行爲是不確定的。 –
此外,**不玩遊戲**。請用C++方式做事。 –
您可以將結果設爲靜態的'static double result [3];'或將其分配爲動態的(更好的)'double * result = new double [3];'如果不需要'delete [] ptr'則釋放它。請參閱https://ideone.com/FU8L0I進行現場演示。 – kwarnke