Я просто делаю беспорядок из этого. У меня есть функция, которая должна принимать одномерный массив, выполнять некоторые вычисления с его значениями, а затем возвращать аналогичный массив с результатами вычисления. Мне не обязательно, возвращает ли тот же массив (с новыми значениями) или создает новый массив в другом месте памяти и возвращает это. Вот что я получил сейчас. Во всем этом есть ошибки, но я не знаю, что я делаю неправильно. Может ли кто-нибудь помочь?Возвращение массива из функции в C
double s = 10;
double b = 2.6666;
double r = 28;
double (*newVertex(double vtx[3])) [] {
static double newVtx[3];
/* Coordinates */
double x = vtx[0];
double y = vtx[1];
double z = vtx[2];
double dt = 0.001;
double dx = s*(y-x);
double dy = x*(r-z)-y;
double dz = x*y - b*z;
newVtx[0] = x + dt*dx;
newVtx[1] = y + dt*dy;
newVtx[2] = z + dt*dz;
return &newVtx;
}
int main(int argc, char *argv[]) {
int i;
/* Arrays to hold the coordinates */
double thisPt[3] = {1, 1, 1};
double nextPt[3];
for (i=0;i<1000;i++) {
printf("%5d %8.3f %8.3f %8.3f\n", i, thisPt[0], thisPt[1], thisPt[2]);
nextPt = newVertex(&thisPt);
thisPt = nextPt;
}
return 0;
}
Спасибо. аннулированию? Мне нужно вернуть массив (или хотя бы указатель на один) – Alex
Если вы меняете массив на месте, вам не нужно ничего возвращать - как только функция вернется, результат будет внутри параметра массив. – misha
Да, вы правы. Я изменил некоторые вещи вокруг, так что я переключился на простое изменение массива на месте и пропущенное возвращаемое значение. Теперь он компилируется. Благодаря! – Alex