改成这样:
void swap (int*a,int*b)
{int t;
t=*a;
*a=*b;
*b=t;
}
你原来那个只是交换形参而已(形参就是地址,你交换了形参也无法交换实参(地址))
a的值等于p,b的值等于q,但它们是不同的指针变量,交换a、b的值不会影响到p和q的值,除非这样改一下:
#include
void swap (int **a,int **b)
{
int *t;
t=*a; *a=*b;*b=t;
}
main()
{
int i=3,j=5,*p=&i,*q=&j;
swap(&p,&q);
printf("%d%d\n",*p,*q);
}
因为最后没有返回值。所以你的那个p和q只能是main中定义的值。这样swap函数就没有用了。明白么?