我对 C 非常陌生,并且遇到以下问题。我初始化数组:
double Cx[101];
for(int i=0; i<101; i++){
Cx[i]=-5+i*0.1;
}
double Q[2][101];
double y[101];
我在主要方法之外有以下功能:
double InitHeight(double g, double dx, double x){
return 3;
}
double InitMom(double g, double dx, double x){
return 2;
}
double plainTopo(double x){
return x*10;
}
现在,在主要方法中,我执行以下操作:
double g=1;
double dx=0.1;
for(int i=0; i<101; i++){
Q[1][i] = InitHeight(g,dx,Cx[i]);
Q[2][i] = InitMom(g,dx,Cx[i]);
y[i] = plainTopo(Cx[i]);
}
所以,我的问题是 Cx 数组的原始值被修改了。这是原始 Cx 的一部分:
-5.000000
-4.900000
-4.800000
-4.700000
-4.600000
-4.500000
-4.400000
...
在我运行代码之后,这就是我得到的:
Cx[] Q[1][] Q[2][] y[]
2.000000 3.000000 2.000000 20.000000
2.000000 3.000000 2.000000 20.000000
2.000000 3.000000 2.000000 20.000000
2.000000 3.000000 2.000000 20.000000
2.000000 3.000000 2.000000 20.000000
2.000000 3.000000 2.000000 20.000000
我一生都无法理解为什么 Cx 数组会被修改。我尝试使用指针来代替,结果相同,还尝试在循环中执行 double x = Cx[i] 然后将 x 传递给函数,但 Cx 再次发生变化。
任何帮助将不胜感激。