addVectors
指針返回到一個本地陣列中,當addVectors
返回val
變爲垃圾數據。
,你可以在第三個參數傳遞給addVectors
,你需要確保所有vec
具有儘管至少3個要素:
void addVectors(double* vec1, double* vec2, double* vec)
{
for(int i = 0; i < 3; i++)
vec[i] = vec1[i] + vec2[i];
}
double A[3] = {1, 2, 3};
double B[3] = {4, 5, 6};
double C[3] = {}; // initialize all C elements to 0.0
addVectors(A,B,C);
我的建議是使用STL容器一樣std::vector,std::list etc,或者如果使用st::arrayÇ ++ 11已啓用。
隨着STL容器可以存檔您的意向:
std::vector<double> addVectors(const std::vector<double>& v1,
const std::vector<double>& v2)
{
std::vector<double> v;
for(int i = 0; i < 3; i++)
{
v.push_back(v1[i] + v2[i]);
}
return v;
}
int main()
{
std::vector<double> A = {1, 2, 3};
std::vector<double> B = {4, 5, 6};
std::vector<double> C(3, 0.0);
std::vector<double> D = addVectors(addVectors(A,B),C);
for(auto& e : D)
{
cout << e << endl;
}
}
我定義函數返回'double *'的原因是我想能夠使用'addVectors(addVectors(A,B),C)'這樣的函數。 – AFP
那麼你應該使用向量或std :: array – billz
似乎'array'會更合適,因爲大小不會改變 –