雨天Zz 发表于 2020-9-1 23:31:08

调用函数

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-1 23:58:27

你这代码太乱了吧

昨非 发表于 2020-9-2 00:02:02

你这个形参和实参都不对应啊

雨天Zz 发表于 2020-9-2 00:05:08

昨非 发表于 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);}

昨非 发表于 2020-9-2 00:06:32

雨天Zz 发表于 2020-9-2 00:05


确定是c/c++?

雨天Zz 发表于 2020-9-2 00:07:18

昨非 发表于 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);}

昨非 发表于 2020-9-2 00:08:32

雨天Zz 发表于 2020-9-2 00:07


你是想求平方和并输出对吧

雨天Zz 发表于 2020-9-2 00:09:33

昨非 发表于 2020-9-2 00:08
你是想求平方和并输出对吧

题目是这个,但是给的答案是31

昨非 发表于 2020-9-2 00:11:35

雨天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啊

雨天Zz 发表于 2020-9-2 00:17:19

昨非 发表于 2020-9-2 00:11
平方和肯定是29啊

答案错了吗

昨非 发表于 2020-9-2 00:19:22

雨天Zz 发表于 2020-9-2 00:17
答案错了吗

求平方和,输入5和2肯定是29啊

昨非 发表于 2020-9-2 00:24:37

雨天Zz 发表于 2020-9-2 00:17
答案错了吗

确定解决了记得给个最佳

baige 发表于 2020-9-2 00:26:46

本帖最后由 baige 于 2020-9-2 00:39 编辑

31,值传递,不会修改原来a的值

baige 发表于 2020-9-2 00:28:41

本帖最后由 baige 于 2020-9-2 00:33 编辑

题目是想通过传参修改a的值,但因为是值传递,所以a的值不会被修改,最后输出a原来的值int a=31

sunrise085 发表于 2020-9-2 09:44:54

这个题目是要你理解什么是形参什么是实参,以及值传递的效果。
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
}

风过无痕1989 发表于 2020-9-2 13:00:42

sunrise085 发表于 2020-9-2 09:44
这个题目是要你理解什么是形参什么是实参,以及值传递的效果。

正解!

赵二 发表于 2020-9-2 15:40:59

学习。
页: [1]
查看完整版本: 调用函数