来帮菜鸟指导一下指针和函数调用问题
程序代码:
#include<stdio.h> void main() { void exchange(int *q1,int *q2,int *q3); //函数声明 int a,b,c,*p1,*p2,*p3; printf("请输入三个数字:"); scanf("%d,%d,%d",&a,&b,&c); p1=&a,p2=&b,p3=&c; exchange(p1,p2,p3); printf("由小到大为:"); } void exchange(int *q1,int *q2,int *q3) //定义将3个变量的值交换的函数 { void swap(int *pt1,int *pt2); //函数声明 if(*q1<*q2)swap(q1,q2); /如果a<b,交换a和b的值 if(*q1<*q3)swap(q1,q3); //如果b<c,交换b和c的值 if(*q2<*q3)swap(q1,q3); //如果a<c,交换a和c的值 } void swap(int *pt1,int *pt2) //定义交换2个变量的值的函数 { int temp; //换*pt1和*pt2变量的值 temp=*pt1; *pt1=*pt2; *pt2=temp; }这是书上一个例题,输入三个整数a,b,c,要求由大到小的顺序将他们输出。用函数实现。
我的疑问:
if(*q1<*q2)swap(q1,q2);
if(*q1<*q3)swap(q1,q3);
if(*q2<*q3)swap(q2,q3);
为什么不是:
if(*q1<*q2)swap(*q1,*q2);
if(*q1<*q3)swap(*q1,*q3);
if(*q2<*q3)swap(*q2,*q3);
两者有什么区别?
麻烦高手解答一下,本人大一,自学到指针,有点不理解。
[ 本帖最后由 wwfdzh2012 于 2012-11-23 12:05 编辑 ]