回 帖 发 新 帖 刷新版面

主题:谢求这题答案

(1) 现有程序如下: 
 fun(int x, int y, int z)
    { z=x*x+y*y; }
    main()
    { int a=31;
      fun(5,2,a);
      printf(“%d”,a);
    }
程序的输出结果是     31       。
分析原因可知:_______________________________



#include <stdio.h>
fun(int x, int y,int z)
{z=x*x+y*y; }
void main()
 { int a=31;
fun(5,2,a);
printf("%d",a);
 }

为什么是31,不是29

回复列表 (共7个回复)

沙发

进来的前辈不会是看着太低级了吧,我是新手希望体谅

板凳

按值传参和按引用传参的区别

3 楼

(⊙o⊙)?!哦,2楼是对的!

4 楼

传值和传址的区别,随便找一本书上都有解释

5 楼

[code=c]
fun(int x, int y, int z)
    { z=x*x+y*y; }
    main()
    { int a=31;
      fun(5,2,a);
      printf(“%d”,a);
    }
[/code]
你这个是传值,函数参数是临时变量,不会返回给调用的函数,可以传指针,或者[code=c]
int fun(int x, int y)
{ int z=x*x+y*y; 
  return z;}
    main()
    { int a=31;
      a=fun(5,2);
      printf(“%d”,a);
    }

[/code]

6 楼

5楼正解

7 楼

因为你调用fun函数那个语句用的是值传递 值传递是单向传递 即把a的值传给z 但是z没有回传给a 所以最后输出的a并没有改变 还是31

我来回复

您尚未登录,请登录后再回复。点此登录或注册