addVectors
returnがガベージ データになると、ローカル配列へのポインターが返されaddVectors
ます。val
に 3 番目のパラメーターを渡すことができますが、すべてに少なくとも 3 つの要素がaddVectors
あることを確認する必要があります。vec
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);
私の提案は、 std::vector、std::list などの STL コンテナを使用するか、C++11 が有効な場合はst::arrayを使用することです。
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;
}
}