采用的是数值参数传递方式,也就是调用自定义函数swap()时,虽然在swap()函数中a和b的值互换了,但是在主函数main()中,a和b的值并没有改变。可以改成指针作函数参数,这样传递的就是变量的地址,所以swap()函数等价于修改了a和b两个变量的值。我把改过的程序复制在下面了,这样能更好理解吧
#include
#include
void swap(int *a, int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
int main(void)
{
int a,b,c;
printf("input 3 numbers: \n");
scanf("%d %d %d", &a, &b, &c);
if(a < b)
{
swap(&a,&b);
}
if(a < c)
{
swap(&a,&c);
}
if(b < c)
{
swap(&b,&c);
}
printf("a = %d, b = %d, c = %d\n", a, b, c);
return 0;
}
运行结果如下,从大到小排序