从函数返回后(即在调用函数中)有什么办法可以访问函数参数吗?
示例:
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");
}
答案 0 :(得分:2)
执行离开函数后,将无法再访问参数。您需要将它们临时存储在调用函数中才能再次访问它们:
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");
}
有关详细信息,请参阅Scope vs. Lifetime of Variable。
其他一些事情:
main
的返回类型应为int
。a < 4 && b < 3
是否a
等于4且b
等于3,这是不对的。add
函数应该具有非void返回类型,可能是float
。 (帽子提示:@ ajp15243)答案 1 :(得分:1)
局部变量 a和b将被销毁,所以 - 不,你不能这样做。
此外,您将add
定义为void
,而它应该是int
(因为它显然会返回c
)。
答案 2 :(得分:0)
答案 3 :(得分:0)
你可以让函数返回变量,你只需要将“void”改为你想要返回的变量。所以对于你的情况:
void add (float a, float b)
将是
int add (float a, float b)
因为看起来你想要返回一个int变量,但我认为如果你让return变量是一个浮点数会更好。
答案 4 :(得分:0)
我不是C程序员,但不管语言如何,我认为你目前的努力有点误导。不要过于关注使用哪种语言专注于编写结构良好的代码,因为许多概念超越了特定的语言。今天的大多数语言都被认为是“完成翻译”,基本上意味着你可以用另一种语言写作。
据说你有一个add函数,它接受两个参数,然后添加这两个参数并返回值。您传递的那些参数在添加功能块中作用域。它们只是你实际调用函数时传入的参数的引用,就像你添加的那样(4,3)。
所以你可以移动你的if条件语句添加函数原因就像我说的那样当你调用你的add函数时,参数会有值,你可以检查它。
这就是为什么你能说a + b。当你调用add时,那些变量就是你传递给函数的。希望这是有道理的。快乐的编码!
答案 5 :(得分:0)
有什么方法可以使用函数中定义的变量值来在程序中调用
否 ,不是你写的方式
如果您的现有代码(原始帖子)以下列方式进行修改,那会不会更有意义:
1) add()
函数的返回类型必须为float
2) 在main()
中,没有理由对a
和b
进行测试,它们不在 add()以外的add()
。{。}
3) 在printf语句中使用main()
函数的结果来查看结果。
4) 不绝对要求,但建议int main(void)
的最低原型为main()
5) IF 您已在任何功能之外的某处创建了一个浮动副本,位于文件顶部,然后他们的范围允许你在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)
}
中使用它们。但是 不是良好的做法 来创建与同一文件中的函数中使用的参数名称相同的全局变量。
(请参阅内联评论以获得解释)
{{1}}