#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这样输入