代码1:传值
#include <iostream>
using namespace std;
void myswap(int x,int y);
int main()
{
int a,b;
cout<<"请输入待交换的两个整数: "<<endl;
cin>>a;
cin>>b;
myswap(a,b);
cout<<"调用交换函数后的结果是: "<<a<<" "<<b<<endl;
return 0;
}
void myswap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
}
运行结果没有进行交换,调用函数本身不会对实参进行操作。
代码2:传地址
#include <iostream>
using namespace std;
void myswap(int *p1,int *p2);
int main()
{
int a,b;
cout<<"请输入待交换的两个整数: "<<endl;
cin>>a;
cin>>b;
myswap(&a,&b);
cout<<"调用交换函数后的结果是: "<<a<<" "<<b<<endl;
return 0;
}
void myswap(int *p1,int *p2)
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
运行结果
进行了交换,地址传值把实参的存储地址传送给对应的形参,从而使得形参指针(p1,p2)和实参(a,b)指针指向同一个地址,所以形参改变实参也改变。
代码3:引用做形参
#include <iostream>
using namespace std;
void myswap(int &x,int &y);
int main()
{
int a,b;
cout<<"请输入待交换的两个整数: "<<endl;
cin>>a;
cin>>b;
myswap(a,b);
cout<<"调用交换函数后的结果是: "<<a<<" "<<b<<endl;
return 0;
}
void myswap(int &x,int &y)
{
int t;
t=x;
x=y;
y=t;
}
运行结果
进行了交换,如果以引用为参数,则既可以使得对形参的任何操作都能改变相应的数据,又使得函数调用显得方便、自然,引用本身就是用实参本身。
知识点总结:
该程序是关于函数参数传递的三种方式,要注意调用的形式
学习心得:
明确了三种函数参数传递的原理