Извините, все, кажется, говорят вам использовать современное программирование типа STL вместо ответа на ваш вопрос. Они правы . Но вы все равно должны понимать, как все работает. Проблема с возвратом массивов состоит в том, что массивы, созданные в вашей функции, будут в стеке. Когда вы покидаете свою функцию, их больше не будет. Что вы можете сделать, это вернуть указатель на массив в куче. Исследуйте немного больше о стеке и куче, чтобы понять. Но ниже приведена простая функция C ++, возвращающая массив, выделенный в куче.
#include <iostream>
double * MakeArray()
{
double *mydouble = new double[5];
mydouble[1]=1.1;
mydouble[1]=2.2;
return mydouble;
}
int main()
{
double *d=MakeArray();
std::cout<<d[1]<<d[2];
delete[] d;
}
редактирование:
Подумав об этом еще, другим способом сделать это без STL будет возвращение структуры с массивом в нем. Большинство компиляторов возвращают структуру по значению (при условии, что вы не занимаетесь встроенным программированием).
Вероятно, лучший простой способ: Передать ваш массив в функцию. Это похоже на передачу ссылки, потому что вы на самом деле просто передаете указатель.
#include <iostream>
void MakeArray(double d[5])
{
d[0] = 0.0; d[1] = 1.1;
d[2] = 2.2; d[3] = 3.3; d[4] =4.4;
}
int main()
{
double dub[5];
MakeArray(dub);
std::cout<<dub[1]<<dub[2];
}
После понимания, как все работает. иди используй STL.