主调函数中的两个变量a和b,要求调用函数交换a,b值
主调函数中的两个变量a和b,要求调用函数交换a,b值,返回交换结果,则以下正确的函数是()a.funa(int*x,int*y){int*p;*p=*x;*x=*y;*y...
主调函数中的两个变量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;}
请分析一下。 展开
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;}
请分析一下。 展开
2个回答
展开全部
正确的函数是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的值也已经发生了变化,如果把这个指针变量换成变通的变量就对了,这个我也不太确定,你可以直接运行一下试试。
理由是:
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的值也已经发生了变化,如果把这个指针变量换成变通的变量就对了,这个我也不太确定,你可以直接运行一下试试。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |