鱼C论坛

 找回密码
 立即注册
查看: 1107|回复: 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
这个题目是要你理解什么是形参什么是实参,以及值传递的效果。
  1. fun(int x, int y, int z)//这里z是形参,你这种写法是值传递,只是把实参的值传给了形参,然后会在函数中创建一个局部变量,局部变量的变化不影响实参原值
  2. {
  3.     z=x*x+y*y; //这里修改了z,在函数结束后,xyz就被销毁了,不影响实参a的值
  4. }
  5. main( )
  6. {
  7.     int a=31;
  8.     fun(5,2,a);//这里是实参,值传递,传进函数的三个参数分别是5,2,31,在函数中进行运算,不会影响到a的值。
  9.     printf("%d", a);//因此这里输出a的值还是31
  10. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-1 23:58:27 | 显示全部楼层
你这代码太乱了吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 00:02:02 | 显示全部楼层
你这个形参和实参都不对应啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-2 00:05:08 | 显示全部楼层
昨非 发表于 2020-9-2 00:02
你这个形参和实参都不对应啊
  1. fun(int x,  int y, int  z)
  2. { z=x*x+y*y; }
  3. main( )
  4. { int a=31;
  5. fun(5,2,a);
  6. printf("%d",  a);}
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 00:06:32 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-2 00:07:18 | 显示全部楼层
昨非 发表于 2020-9-2 00:02
你这个形参和实参都不对应啊
  1. fun(int x,inty, intz)
  2. { z=x*x+y*y; }
  3. main( )
  4. { int a=31;
  5. fun(5,2,a);
  6. printf("%d",a);}
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


你是想求平方和并输出对吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

题目是这个,但是给的答案是31
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 00:11:35 | 显示全部楼层
雨天Zz 发表于 2020-9-2 00:09
题目是这个,但是给的答案是31
  1. int fun(int x, int y)
  2. {
  3.         int z;
  4.         z = x * x + y * y;
  5.         return z;
  6. }
  7. void main()
  8. {
  9.         int a;
  10.         a=fun(5, 2);
  11.         printf("%d", a);
  12. }
复制代码


平方和肯定是29啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

答案错了吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

求平方和,输入5和2肯定是29啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

确定解决了记得给个最佳
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

31,值传递,不会修改原来a的值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

题目是想通过传参修改a的值,但因为是值传递,所以a的值不会被修改,最后输出a原来的值int a=31
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 09:44:54 | 显示全部楼层    本楼为最佳答案   
这个题目是要你理解什么是形参什么是实参,以及值传递的效果。
  1. fun(int x, int y, int z)//这里z是形参,你这种写法是值传递,只是把实参的值传给了形参,然后会在函数中创建一个局部变量,局部变量的变化不影响实参原值
  2. {
  3.     z=x*x+y*y; //这里修改了z,在函数结束后,xyz就被销毁了,不影响实参a的值
  4. }
  5. main( )
  6. {
  7.     int a=31;
  8.     fun(5,2,a);//这里是实参,值传递,传进函数的三个参数分别是5,2,31,在函数中进行运算,不会影响到a的值。
  9.     printf("%d", a);//因此这里输出a的值还是31
  10. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

正解!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 15:40:59 | 显示全部楼层
学习。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 01:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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