输入三个数字,按大到小输出,要求要用指针和函数的调用
#include <stdio.h>
void main()
{
void exchange(int *q1,int *q2,int *q3);
int a,b,c,*p1,*p2,*p3;
scanf("%d%d%d",&a,&b,&c);
p1 = &a;
p2 = &b;
p3 = &c;
exchange(p1,p2,p3);
printf("%d %d %d \n",a,b,c);
}
void exchange(int *q1,int *q2,int *q3)
{
void swap(int *pt1,int *pt2);
if(*q1<*q2) swap(q1,q2);
if(*q2<*q3) swap(q1,q3);
if(*q2<*q3) swap(q2,q3);
}
void swap(int *pt1,int *pt2)
{
int temp;
temp = *pt1;
*pt1 = *pt2;
*pt2 = temp;
}
我输入“3,1,2” 时,输出结果却是“2,3,1” 奇怪?????
请各位能一一回答,详细一点,谢谢了哈!
它的值是怎么返回的啊,没有return语句喔??
追答因为是按值传参,即传进来的是指向内存的指针,通过指针即可修改内存的值,不需要返回值。你去看看就懂了.
追问一般比较三个数的大小,是不是只有这三个变量a,b,c 是不够的
追答够啊?有什么问题?
我是郁闷它是怎么做到对调的,明明swap函数没有返回,执行了也木有用的啊??