我只是把这件事弄得一团糟。我有一个函数,它应该采用一维数组,用它的值做一些计算,然后返回一个带有计算结果的类似数组。我不一定关心它是否返回相同的数组(带有新值),或者它是否在不同的内存位置创建一个新数组并返回它。这是我目前所拥有的。这一切都有错误,但我不知道我做错了什么。任何人都可以帮忙吗?
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;
}