Мне нужно сделать точечный продукт двух векторов, а затем отобразить результат. Из того, что я узнал, лучшее, что я могу сделать с 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++. –
Вы можете сделать результат статическим «статическим двойным результатом [3];» или выделить его динамическим (лучше) 'double * result = new double [3];' и освободить его, если не нужно 'delete [] ptr'. См. Https://ideone.com/FU8L0I для демонстрации в реальном времени. – kwarnke