主调函数中的两个变量a和b,要求调用函数交换a,b值,返回交换结果,则以下正确的函数是()

问题描述:

主调函数中的两个变量a和b,要求调用函数交换a,b值,返回交换结果,则以下正确的函数是()
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;}
请分析一下.
1个回答 分类:综合 2014-11-19

问题解答:

我来补答
正确的函数是D.
理由是:
B错在没使用指针,X和Y是局部变量,当函数结束后两个变量的值无法返还给调用者.
C错在算法,先让X指向Y,这时X已经变成Y,然后再让Y指向新的X,也就是Y等于Y自己,这样的结果就是X的值丢了,调用这个函数之后,X和Y两个同时等于Y了.
剩下的就是A和D了.A应该是错在使用了一个中间指针变量,在没对这个指针变量初始化的情况下,直接*p=*x;应该是让P直接指向X,而不是简单的把X的值赋给P这个变量,所以,当第二句*x=*y;时,事实上P的值也已经发生了变化,如果把这个指针变量换成变通的变量就对了,这个我也不太确定,你可以直接运行一下试试.
 
 
展开全文阅读
剩余:2000