为什么调用函数里面设指针变量时候会出问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  1. ```c
    #include<stdio.h>
    void jie(int *a,int *b)
    {
    int *p;
    *p=*a;
    *a=*b;
    *b=*p;
    printf("%d ",*p);

}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
jie(&a,&b);
printf("%d %d",a,b);
}

```

img

为什么*p=5,因该是3啊,而且我试过调用函数里面用 int *p时候在里面printf *p的值是无的不像主函数一样是0,我知道交换函数应该用int型但我只是想知道为什么调用函数里面用指针变量会发生这种事,只能用 int交换不能用 *交换而且会出现错误

改成
int p = *a;
*a = *b;
*b = p;