鱼C论坛

 找回密码
 立即注册
查看: 864|回复: 16

[已解决]调用函数

[复制链接]
发表于 2020-9-1 23:31:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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 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
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-1 23:58:27 | 显示全部楼层
你这代码太乱了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 00:02:02 | 显示全部楼层
你这个形参和实参都不对应啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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);}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 00:06:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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);}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 00:08:32 | 显示全部楼层


你是想求平方和并输出对吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-2 00:09:33 | 显示全部楼层
昨非 发表于 2020-9-2 00:08
你是想求平方和并输出对吧

题目是这个,但是给的答案是31
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-2 00:17:19 | 显示全部楼层
昨非 发表于 2020-9-2 00:11
平方和肯定是29啊

答案错了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 00:19:22 | 显示全部楼层

求平方和,输入5和2肯定是29啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 00:24:37 | 显示全部楼层

确定解决了记得给个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 00:26:46 From FishC Mobile | 显示全部楼层
本帖最后由 baige 于 2020-9-2 00:39 编辑

31,值传递,不会修改原来a的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 00:28:41 From FishC Mobile | 显示全部楼层
本帖最后由 baige 于 2020-9-2 00:33 编辑

题目是想通过传参修改a的值,但因为是值传递,所以a的值不会被修改,最后输出a原来的值int a=31
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 13:00:42 | 显示全部楼层
sunrise085 发表于 2020-9-2 09:44
这个题目是要你理解什么是形参什么是实参,以及值传递的效果。

正解!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 15:40:59 | 显示全部楼层
学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表