调用函数与c语言指针问题求教

#include

void swap(int*a,int*b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}

int main()
{
int x,y;
int *p_x,*p_y;
printf("请输入两个数\n");
scanf("%d%d",&x,&y);
p_x=&x;
p_y=&y;
swap(p_x,p_y);
printf("x=%d y=%d\n",x,y);
return 0;
}

这样的函数,p_x的值为x的地址。调用函数时,应该是将p_x的值赋予*a这个指针。
可是我发现*a的值是就是x,并不是x的地址,请问这是为什么?

 这样写交换的是两个地址上的值,而不是交换指针
如果要按照你说的,应该是
void swap(int**a,int**b)
{
int* temp;
temp=*a;
*a=*b;
*b=temp;
}