为什么答案不是29而是31啊?
c语言函数问题哎哎
答案:7 悬赏:0 手机版
解决时间 2021-05-22 21:56
- 提问者网友:心牵心
- 2021-05-22 13:58
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 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
望采纳
形参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.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯