(跳过函数内部静态变量的讨论,它对不同的函数没有帮助…)
在学校,我必须做一个程序,计算一些数字在不同的方法,不同的方法是相互关系的一个变量。这是我的一部分代码。
int pythagoras(double a, double b){
double a2;
double b2;
double c2;
double c =0.0;
double wurzelc;
a2 = pow(a,2);
b2 = pow(b,2);
c2 = a2 + b2;
c = a + b;
wurzelc = sqrt(c2);
printf("a: %2.2f, a Quadrat: %2.2f n",a, a2);
printf("b: %2.2f, b Quadrat: %2.2f n",b, b2);
printf("c: %2.2f, c Quadrat: %2.2f, c Wurzel: %2.2f n",c, c2, wurzelc);
return 0;
}
int konvertradius(){
double r2;
double kflaeche;
/*double r = 6.1;*/
double r = c; //c is from "int pythagoras()"
r2 = pow(r,2);
kflaeche = M_PI * r2;
printf("Kreisradius: %2.2f Flaecheninhalt: %2.2f n",r, kflaeche);
return 0;
}
int main(){
pythagoras(1.9, 4.2);
konvertradius();
return 0;
}
,现在我的问题,我怎样才能得到变量"c"的结果进入方法"konvertradius()"
p。学生:我不允许使用set和get。
不。
在执行另一个函数时,pythagoras()
中的局部变量c
不存在。
要使该变量存在并具有任何值,您必须调用该函数。但是当它返回时,变量已经不再存在了。
您可以做的是将代码(计算c
)移动到返回求和结果的辅助函数中。然后,可以从您希望在其中使用该计算的两个函数中调用该辅助函数。
double helper(double a, double b)
{
return a + b ;
}
int pythagoras(double a, double b)
{
double a2;
double b2;
double c2;
double c =0.0;
double wurzelc;
a2 = pow(a,2);
b2 = pow(b,2);
c2 = a2 + b2;
c = helper(a,b);
wurzelc = sqrt(c2);
printf("a: %2.2f, a Quadrat: %2.2f n",a, a2);
printf("b: %2.2f, b Quadrat: %2.2f n",b, b2);
printf("c: %2.2f, c Quadrat: %2.2f, c Wurzel: %2.2f n",c, c2, wurzelc);
return 0;
}
int konvertradius(double a, double b)
{
double r2;
double kflaeche;
/*double r = 6.1;*/
double r = helper(a,b); //c is from "int pythagoras()"
r2 = pow(r,2);
kflaeche = M_PI * r2;
printf("Kreisradius: %2.2f Flaecheninhalt: %2.2f n",r, kflaeche);
return 0;
}
int main(void)
{
pythagoras(1.9, 4.2);
konvertradius(1.9, 4.2);
return 0;
}
如您所见,这反过来又要求您向第二个函数提供输入数据。因为没有"使用相同的值",你知道我指的是哪个。(跳过函数内部静态变量的讨论,它对不同的函数没有帮助…)