关于c语言指针的问题

设计一个函数,利用指针实现两个int型数据的交换,函数原型为:void swap(int *p,int *q)。在main函数里调用此函数,交换两个int型数据
【输入形式】输入两个整数,以空格分开
【输出形式】输出交换后的数
【样例输入】2 3
【样例输出】3 2

#include<stdio.h>
void swap(int *p,int *q)
{
    int t = *p;
    *p = *q;
    *q = t;
}
int main()
{
    int p, q;
    scanf("%d%d", &p, &q);
    swap(&p, &q);
    printf("%d\t%d\n",p, q);
    return 0;
}

img

#include <stdio.h>
int main()
{
int a,b;
void swap(int *p,int *q);
scanf("%d %d",&a,&b);
swap(&a,&b);
printf("%d %d\n",a,b);
return 0;
}
void swap(int *p,int *q)
{
int t;
t=*p;
*p=*q;
*q=t;
}