#include
void ex(int *p1,int *p2);
void main()
{
void ex(int *q1,int *q2);
int a,b,*p1,*p2;
scanf("%d %d",&a,&b);
p1=&a;
p2=&b;
if(a>b)
{
ex(p1,p2);
}
printf("%d<%d",*p1,*p2);
}
void ex(int *q1 ,int *q2)
{
int *q;
printf("交换中\n");
q=q1;
q1=q2;
q2=q;
}
由于值传递的原因,main函数向ex函数的传递是单向的,传进ex中的是a、b地址的复制值,在ex中把地址交换并不能改变main里面a、b的地址,所以对main里的元素没有实质的影响。建议你改成:
void ex(int* q1,int* q2){
int temp=*q1;
*q1=*q2;
*q2=temp;
}