引用型参数运行不成功

问题遇到的现象和发生背景 引用型参数运行结果整数不交换
问题相关代码
 #include<stdio.h>
 int temp;
 //指针型形参
int  swap1(int *a,int*b)
 {
     temp=*a;
     *a=*b;
     *b=temp;

 }
 //引用型形参
int swap2( int&a,int&b)//c++中形参前的"&"符号不是指针运算符,而是引用
 {
     temp=a;
     a=b;
     b=temp;

 }
 int main()
 {
     int x,y;
     printf("Please input two numbers:");
     scanf("%d,%d\n",&x,&y);
     swap1(&x,&y);    //此处需要传参
     printf("指针型参数输出:%d,%d\n",x,y);
     swap2(x,y);
     printf("引用型参数输出:%d,%d\n",x,y);
 }


运行结果指针型整数交换,引用型整数不交换
我想要达到的结果 运行后指针型和引用型整数都交换

你是不是觉得两个输出的结果不一样,就认为他们没交换?
其实交换两次,就变回你输入的样子了

 #include<stdio.h>
 int temp;
 //指针型形参
void swap1(int *a,int*b)
 {
     temp=*a;
     *a=*b;
     *b=temp;
 
 }
 //引用型形参
void swap2( int &a,int &b)//c++中形参前的"&"符号不是指针运算符,而是引用
 {
     temp=a;
     a=b;
     b=temp;
 }
 int main()
 {
     int x,y,a,b;
     printf("Please input two numbers:");
     scanf("%d,%d\n",&x,&y);
     a=x;
     b=y;
     swap1(&x,&y);    //此处需要传参
     printf("指针型参数输出:%d,%d\n",x,y);
     swap2(a,b);
     printf("引用型参数输出:%d,%d\n",a,b);
 }

因为swap1已经交换过一次,swap2再交换一次就和原来一样了。你可以换两个变量来交换

两个swap函数的int改成void,因为你没返回值。
scanf("%d,%d\n"里去掉\n,然后输入格式是1,2这样输入