永发信息网

c语言函数问题哎哎

答案:7  悬赏:0  手机版
解决时间 2021-05-22 21:56
  • 提问者网友:心牵心
  • 2021-05-22 13:58

为什么答案不是29而是31啊?

最佳答案
  • 五星知识达人网友:轻熟杀无赦
  • 2021-05-22 14:12
这个是自然的了,你的func是一个函数它有三个参数,在C语言中形参(也就是你的int x,int y,int z)是会拷贝实参的,也就是说相当于执行了
形参x=5;形参y=2,形参z=a;
函数执行之后只改变了z的值,不会改变a的值
如果要改变a的值你可以用引用类型
void func(int x,int y,int &z)
{
z=x*x+y*y
}
或者
void func(int x,int y,int *z)
{
*z=x*x+y*y
}
这个两个函数最后a都会是19
望采纳
全部回答
  • 1楼网友:罪歌
  • 2021-05-22 20:11

  你应该要先了解下参数的传递方式,这个是形式参数,只会被拷贝,不会被改变.

所以 fun()中 a传过去的 仅仅是一个拷贝,在函数体内部.他的值没有做任何改变.

 但是  如果有out 或者ref的话 他就会改变了

你也可以使用 return的方式 

 如

int  fun(int a, int b,int c)

{

    c= a*a+b*b;

return c;//

}

或者

int   fun(int a,int b)

{

return a*a+b*b;

}

main()中就是 :

int  a=31;

c = fun(5,2,a);//结果29

或者 c = fun(5,2); //结果29

  • 2楼网友:杯酒困英雄
  • 2021-05-22 18:46

这个涉及到指针之类的吧,照上面的函数func改变不了a的值,除非写成这样

void func(int x, int y, int *z) {     *z=x*x+y*y; } void main() {  int a = 31;  func(5,2,&a);  printf("%d",a);

}

  • 3楼网友:轮獄道
  • 2021-05-22 18:05

main()

中func(5.2,a)改为

func(5,2,&a)

定义中改为void func(intx,inty,int *z)

{*z=x*x+y*y}

  • 4楼网友:煞尾
  • 2021-05-22 17:43

你可以这样改下,

加一条一句

printf("%d",func(5,2,a));

就可以了

  • 5楼网友:孤老序
  • 2021-05-22 16:04

因为a自从赋值以后就始终没有变啊,你赋值给变量a,然后输出a。

中间那个自定义函数中对a没有任何影响。

  • 6楼网友:北方的南先生
  • 2021-05-22 15:23

EASY!

程序调用函数func()时,5赋给X,2赋给Y,a赋给Z。

a=5*5+2*2=29

打印输出a.

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯