永发信息网

在子函数中用指针交换变量值

答案:5  悬赏:60  手机版
解决时间 2021-02-03 11:40
要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确解决此功能的函数是
A)funa(int *x,int *y)
{int *p;
*p=*x;*x=*y;*y=*p;}
B) funb(int x,int y)
{int t;
t=x;x=y;y=t;}
C) func(int *x,int *y)
{*x=*y;*y=*x;}
D) fund(int x,int y)
{*x=*x+*y; *y=*x-*y; *x=*x-*y; }
抱歉哦,可能是我画蛇添足了,这道题没有要求必须用指针来解决,所以没用指针的不一定不对
正确答案给的是D,不过在网上查了下,确实只发现了fund(int *x,int *y)的用法.我没抄错,可能是题目出错了。希望能解释一下fund(int *x,int *y)的原理,再次感谢了
最佳答案
很负责的告诉你,没有正确答案,我怀疑你把最后一个答案给抄错了吧?应该是fund(int *x,int *y) 这样就有答案了,选D
A错在你只定义了个指针*p,没让他指向任何内存,就对他进行赋值操作,肯定错了
B错在参数为对象,传递的是实参的副本,函数改变的只是副本的值,不会修改实参的值
C错在当你执行*x=*y后x所指那块内存装的值已经变成y的了,再执行*y=*x已经没意义了
D就是上面说的了,怀疑你把题抄错了

晕,楼上的兄弟们,你们把指针搞清楚一点再回答好吗..

参数是指针或者引用是可以对实参进行修改的,如果是对象是不能的,如果你把把B答案改为funb(int &x,int &y),那就正确了

D 答案
D) fund(int *x,int *y)
{*x=*x+*y; *y=*x-*y; *x=*x-*y; }
*x=*x+*y将x所指地址里面的值改为x所指值+y所指值
*y=*x-*y因为现在x所指的值已经是x和y的和了
所以*x-*y得到的是原来x所指的值,并赋 给y所指的内存,所以现在y的值已经变成x的值了

*x=*x-*y这时x的值是x和y的和,而y已经是原来x的值了,相减得到原来y的值,所以x的值变成原来y的值了
x和y的值发生交换
全部回答
A B D改一下也对 A)funa(int *x,int *y) {int p; p=*x;*x=*y;*y=p;} B) funb(int &x,int &y) {int t; t=x;x=y;y=t;} D) fund(int *x,int *y) {*x=*x+*y; *y=*x-*y; *x=*x-*y; } 顺便说一下; 你可能对数值传递,地址传递(A),引用传递(B) 不是很清楚,建议你去看一下
D 是对的 么有问题 但是 函数定义 得该int *x int *y
应该选AAAAAAAAAAAAAAAAAA!!!!!!! 要求用指针那B就不能选了! D中的形式参数传递的不是指针。刚不能改变原变量的值。只能改变副本的值,没有意义。。。 C就明显错误了。只能让两的变量的值变成同一个值!!! 那就只能选A了,而且A是完全正确的,只要正确调用就行。。。
A 传递值肯定不对,那么B和D不对, C一看就不行, A是对的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么停车时,发动机就会熄火?
贤可的意思是什么啊?知道的请说下!
油包水乳液一直加水会有什么现象
安贝尔孕婴专卖在哪里啊,我有事要去这个地方
假定某投资者按940元的价格购买了面额为1000
安卓系统无root怎么安装google商店不会闪退
大学学生会第二轮面试,然后我又染了头发,有
请问铝导电氧化处理的原理是什么?谢谢
扫疥的意思是什么啊?知道的请说下!
中国海洋大学的水利工程专业的研究生就业情况
美国著名的未来学家约翰.奈斯比特(JohnNaisb
高君通讯怎么去啊,有知道地址的么
魔兽世界风险硬币去哪兑换
怎样提高自由基反应速率自由基加成反应
补钙补多了会有什么后果?
推荐资讯
膏烛的意思是什么啊?知道的请说下!
中国邮政速递物流广慈揽投站怎么去啊,有知道
半枝莲的药用部位为A.根B.茎C.根茎D.鳞茎E.全
《把铁路修到拉萨去》那些生字词
化学方程及其反应原理1.乙烯—1,2-氯乙烷2.丙
被称为是全世界天然辐射剂量率最低的地方的是
男同事从我身边走过回头看我什么情况
龙文教育(炫彩店)在什么地方啊,我要过去处理
闳耀的意思是什么啊?知道的请说下!
卐读第几声
百佳超市汇宝花园店怎么去啊,有知道地址的么
热地的意思是什么啊?知道的请说下!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?