首页 新闻 会员 周边 捐助

为什么i,j出了judge函数就变回原先的值了,怎么解决

0
悬赏园豆:20 [已解决问题] 解决于 2024-11-12 21:20

如图,想创建一个将输入的数字从大到小排列的程序。请大佬们帮忙解答

茫空的主页 茫空 | 初学一级 | 园豆:8
提问于:2024-11-11 08:24
< >
分享
最佳答案
0

judge(i,j)的i,j是值传递的,意思是:运行这个函数的时候是把i,j的值拷贝了一份输入进去,跟原来的i,j没什么影响。
所以有两个思路:
第一个是仍然值传递,然后把void改成输出型的,
比如:(int,int) judge(i,j) {return i>j?(i,j):(j:i)}
然后
arr[m]=judge(i,j).first()
arr[n]=judge(i,j).second()
第二个是改成地址传递,楼上说的引用传递,

收获园豆:20
猝不及防 | 老鸟四级 |园豆:2878 | 2024-11-12 15:26

谢谢指导

茫空 | 园豆:8 (初学一级) | 2024-11-12 21:20
其他回答(1)
0

首先,你的 judge 函数声明就有问题,函数声明的参数没类型,我都不知道咋通过的。还有 c/c++ 里面参数传递都是值传递,想要输出有效果,要么 c/c++ 指针,c++ 就可以是引用。

void judge(int &i, int&j) // c++ only
void judge(int *i, int* j) // 传参的话要传地址
寂静的羽夏 | 园豆:2131 (老鸟四级) | 2024-11-11 09:22

谢谢指导,我回去再试试

支持(0) 反对(0) 茫空 | 园豆:8 (初学一级) | 2024-11-11 09:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册