第一步:
两个概念先必须搞懂:(来自百科)
实参,actual parameters,全称为"实际参数"是在调用时传递给函数的参数,即传递给被调用函数的值。实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参
下面开始介绍::
传值一共分为三种:传值,传地址,引用做形参
1.传值方式(最简单常用也最容易理解的一种)
- #include <iostream>
- using namespace std;
- void myswap(int x,int y)
- {
- int t;
- t=x;
- x=y;
- y=t;
- }
- int main()
- {
- int a,b;
- cout<<"请输入需要交换的两个数:"<<endl;
- cin>>a>>b;
- myswap(a,b);
- cout<<"调用交换函数后的结果是:"<<endl<<a<<" "<<b<<endl;
- return 0;
- }
-
- 输出结果:在myswap()函数中a,b的值发生了传递,但主函数中a,b的值不发生改变
2.传地址方式
- #include <iostream>
- using namespace std;
- void myswap(int *p1,int *p2)
- {
- int t;
- t=*p1;
- *p1=*p2;
- *p2=t;
- }
- int main()
- {
- int a,b;
- cout<<"请输入需要交换的两个数:"<<endl;
- cin>>a>>b;
- myswap(&a,&b);
- cout<<"调用交换函数后的结果是:"<<endl<<a<<" "<<b<<endl;
- return 0;
- }
-
- 输出结果:myswap()函数中,*p1,*p2是指向实参的,通过更改*p1,*p2可以实现交换实参数值
3.引用做形参方式
- #include <iostream>
- using namespace std;
- void myswap(int &p1,int &p2)
- {
- int t;
- t=p1;
- p1=p2;
- p2=t;
- }
- int main()
- {
- int a,b;
- cout<<"请输入需要交换的两个数:"<<endl;
- cin>>a>>b;
- myswap(a,b);
- cout<<"调用交换函数后的结果是:"<<endl<<a<<" "<<b<<endl;
- return 0;
- }
-
- 输出结果:由于形参实参公用一片内存空间,改变形参p1,p2的同时,实参a,b也跟着改变
补充:引用与指针有什么区别?
指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已
有进一步研究兴趣的请移步:浅谈C++中指针和引用的区别,谢谢作者分享!