从函数返回后(即在调用函数中)有什么方法可以访问函数参数?
例子:
void add (float a , float b) {
int c;
c=a+b;
return c;
}
void main () {
add (3,4);
if (a <4 && b<3) // a and b are variable in add functions
printf("a is 4 and b is 3");
}
从函数返回后(即在调用函数中)有什么方法可以访问函数参数?
例子:
void add (float a , float b) {
int c;
c=a+b;
return c;
}
void main () {
add (3,4);
if (a <4 && b<3) // a and b are variable in add functions
printf("a is 4 and b is 3");
}
一旦执行离开函数,就无法再访问参数。您需要将它们临时存储在调用函数中才能再次访问它们:
int main ()
{
float a = 3.0f, b = 4.0f;
add (a, b);
if (fabs(a - 4.0f) < 0.005f && fabs(b - 3.0f) < 0.005f) // a and b are now local variables
printf("a is 4 and b is 3");
}
有关更多信息,请参阅变量的范围与生命周期。
其他几件事:
main
应该是int
.a < 4 && b < 3
是否a
等于 4 和b
等于 3,这是不对的。add
函数应该有一个非 void 返回类型,可能是float
. (帽子提示:@ajp15243)退出函数时,局部变量a 和 b 被销毁,所以 - 不,你不能这样做。
此外,您定义add
为void
, 虽然它应该是int
(因为它显然返回c
)。
有什么方法可以使用函数中定义的变量的值在程序中调用
不,不是你写的那样
如果您现有的代码(在原始帖子中)通过以下方式修改,是否更有意义:
1)add()
函数的返回类型必须是浮点数
2)在main()
中,没有理由进行测试a
,并且b
它们不在范围之外add()
功能。
3)add()
在 printf 语句中使用函数的结果来查看结果。
4) 不是绝对要求,但建议最小原型为main()
5 int main(void)
) 如果您在文件顶部的任何函数之外的某处创建了浮点数的副本,那么它们的范围将允许您在main()
. 但它创建与同一文件中函数中使用的参数名称相同名称的全局变量 不是一个好习惯。
(有关解释,请参阅行内注释)
float add (float a , float b) {//must return float, you already have a return statement
float c;//from int to float (because that matches the argument types being evaluated)
c=a+b;
return c;
}
float x = 5.0; //these are variables with global scope, meaning they exist and can be used in every function
float y = 7.2;
int main (void) {//change from void main() to int main(void)
float z=0;
z = x + y;//legal statement summing globals x & y and storing in local z
//add (3,4);//used in printf below
//if (a <4 && b<3) // a and b are variable in add functions (this is meaningless in context of an add function
//call the add() function, with float arguments, from here, and print out the results in one step.
printf("results of add are: %f", add(3.0,4.0));//change from 3 to 3.0 (just to be anal)
}
您可以让函数返回变量,只需将“void”一词更改为要返回的变量。所以对于你的情况:
void add (float a, float b)
将会
int add (float a, float b)
因为看起来你想返回一个 int 变量,但我认为如果你只让返回变量是一个浮点数会更好。
我不是 C 程序员,但不管是哪种语言,我认为你目前的努力有点误导。不要太拘泥于您使用的语言,专注于编写结构良好的代码,因为许多概念超越了特定语言。今天的大多数语言都被认为是“Turning Complete”,基本上意味着你可以用一种语言写出你可以用另一种写出的东西。
话虽如此,您有一个 add 函数,它接受两个参数,然后将这两个参数相加并返回值。您传递的那些参数的范围在 add 功能块内。它们仅作为您在实际调用函数时传入的参数的参考,就像您执行 add(4, 3) 一样。
因此,您可以在 add 函数中移动 if 条件语句,就像我在调用 add 函数时所说的那样,参数将具有值,您可以检查它。
这就是为什么你可以说 a + b。因为当您调用 add 时,这些变量就是您传递给函数的内容。希望这是有道理的。快乐编码!