//(3)引用作形参
#include<iostream>
void myswap(int &x, int &y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a, b;
printf("请输入待交换的两个整数:");
scanf("%d %d", &a, &b);
myswap(a,b); //分三个程序,分别写上调用myswap的合适形式
printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
return 0;
}
//(2)传地址
#include<iostream>void myswap(int *p1, int *p2){ int t; t=*p1; *p1=*p2; *p2=t;}int main(){ int a, b; printf("请输入待交换的两个整数:"); scanf("%d %d", &a, &b); myswap(&a,&b); //分三个程序,分别写上调用myswap的合适形式 printf("调用交换函数后的结果是:%d 和 %d\n", a,
b); return 0;}//(1)传值
#include<iostream>
void myswap(int x, int y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a, b;
printf("请输入待交换的两个整数:");
scanf("%d %d", &a, &b);
myswap(a,b); //分三个程序,分别写上调用myswap的合适形式
printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
return 0;
}
使用传值方法调用函数时,交换不成功,所交换的是x和y的值,即形式参数,对于要交换的a和b是无效的。
使用传地址的方法调用函数时,所调用的是a和b的地址&a和&b,x和y分别作为指针指向a和b。执行过程中,t赋值为x指向的值,使得t=x,x所指向的值赋值为y指向的值,y指向的值赋值为t。
使用引用作形参方法调用函数时,加入引用数据类型,原来的a,b,对形式参数x,是a的引用,x与a所占内存相同,同理。y与b所占内存相同,所以在交换过程中,是交换了x和y所占用的空间,即交换了a和b。