求助C中址传递和值传递的问题
1) : sawp( int p1, int p2)
{int t;
t=p1;p1=p2;p2=t;
}
main()
{ int a,b;
scanf("%d,%d\n",&a,&b);
if(a<b) swap(a,b);
printf("%d,%d\n",a,b);
}
2);
sawp( int *p1,int *p2)
{int t;
t=*p1;*p1=*p2;*p2=t;
}
main()
{ int a,b;
int *w1, *w2;
scanf("%d,%d\n",&a,&b);
w1=&a; w2=&b;
if(a<b) swap(w1,w2);
printf("%d,%d\n",a,b);
}
输入5,9 <cr>后,第一个输出5,9
第二个输出9,5
w1,w2的指向没发生变化,子函数都是值的交换,为什么会不同,指点一下。