调用函数
fun(int x, int y, int z){ z=x*x+y*y; }
main( )
{ int a=31;
fun(5,2,a);
printf("%d", a);}
这个程序运行结果为啥是31? 你这代码太乱了吧
你这个形参和实参都不对应啊 昨非 发表于 2020-9-2 00:02
你这个形参和实参都不对应啊
fun(int x, int y, int z)
{ z=x*x+y*y; }
main( )
{ int a=31;
fun(5,2,a);
printf("%d", a);} 雨天Zz 发表于 2020-9-2 00:05
确定是c/c++? 昨非 发表于 2020-9-2 00:02
你这个形参和实参都不对应啊
fun(int x,inty, intz)
{ z=x*x+y*y; }
main( )
{ int a=31;
fun(5,2,a);
printf("%d",a);} 雨天Zz 发表于 2020-9-2 00:07
你是想求平方和并输出对吧 昨非 发表于 2020-9-2 00:08
你是想求平方和并输出对吧
题目是这个,但是给的答案是31 雨天Zz 发表于 2020-9-2 00:09
题目是这个,但是给的答案是31
int fun(int x, int y)
{
int z;
z = x * x + y * y;
return z;
}
void main()
{
int a;
a=fun(5, 2);
printf("%d", a);
}
平方和肯定是29啊 昨非 发表于 2020-9-2 00:11
平方和肯定是29啊
答案错了吗 雨天Zz 发表于 2020-9-2 00:17
答案错了吗
求平方和,输入5和2肯定是29啊 雨天Zz 发表于 2020-9-2 00:17
答案错了吗
确定解决了记得给个最佳 本帖最后由 baige 于 2020-9-2 00:39 编辑
31,值传递,不会修改原来a的值 本帖最后由 baige 于 2020-9-2 00:33 编辑
题目是想通过传参修改a的值,但因为是值传递,所以a的值不会被修改,最后输出a原来的值int a=31 这个题目是要你理解什么是形参什么是实参,以及值传递的效果。
fun(int x, int y, int z)//这里z是形参,你这种写法是值传递,只是把实参的值传给了形参,然后会在函数中创建一个局部变量,局部变量的变化不影响实参原值
{
z=x*x+y*y; //这里修改了z,在函数结束后,xyz就被销毁了,不影响实参a的值
}
main( )
{
int a=31;
fun(5,2,a);//这里是实参,值传递,传进函数的三个参数分别是5,2,31,在函数中进行运算,不会影响到a的值。
printf("%d", a);//因此这里输出a的值还是31
} sunrise085 发表于 2020-9-2 09:44
这个题目是要你理解什么是形参什么是实参,以及值传递的效果。
正解! 学习。
页:
[1]