关于指针函数赋值的问题

问题遇到的现象和发生背景
#include <stdio.h>

int main()
{
void swap(intx,inty);
int a,b,*p1,p2;
scanf("%d %d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
//p1=p2;
swap(p1,p2);
printf("max=%d",p1);
return 0;
}
void swap(int
x,int
y)
{
x=y;
}

输入2 3 如果使用这个函数的话结果就有问题,如果直接进行地址赋值p1=p2结果就是正确的,请问问题出现在哪里
我的解答思路和尝试过的方法
我想要达到的结果
void swap(int *x,int *y)
{
    int t = *x;
    *x = *y;
    *y = t;
}

按照你代码的意思,是直接交换两个指针