第二周 项目1 C/++语言中函数参数传递的三种方式

本文介绍了使用C++实现两个整型变量交换的三种方法:传值、传地址及引用做形参,并分析了每种方法的工作原理及适用场景。

问题:

传值:

/* 
*Copyright(c)2016, 烟台大学计算机学院 
*All rights reserved. 
*文件名称:0000.cpp 
*作者:白晓娟
*完成日期:2016.9.7 
 
 
 
*问题描述:交换两个整型变量的三种方式 
*输入描述:输入两个整型变量  
*程序输出:输出交换后的两个整型变量  
*/  
  
#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;    
    cout<<a<<" "<<b<<endl;    
    return 0;    
}    

<span style="font-family: Arial, Helvetica, sans-serif;">传地址:</span> 

<span style="font-family: Arial, Helvetica, sans-serif;">/*</span>  

/*Copyright(c)2016, 烟台大学计算机学院  
*All rights reserved.  
*文件名称:0000.cpp  
*作者:白晓娟  
*完成日期:2016.9.7  
  
  
  
*问题描述:交换两个整型变量的三种方式  
*输入描述:输入两个整型变量   
*程序输出:输出交换后的两个整型变量   
*/  
  
#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;    
    cout<<a<<" "<<b<<endl;    
    return 0;    
}    



引用做形参:

/* 
*Copyright(c)2016, 烟台大学计算机学院 
*All rights reserved. 
*文件名称:0000.cpp 
*作者:白晓娟 
*完成日期:2016.9.7 
 
*问题描述:交换两个整型变量的三种方式 
*输入描述:输入两个整型变量  
*程序输出:输出交换后的两个整型变量  
*/  
  
#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;    
    cout<<a<<" "<<b<<endl;    
    return 0;    
}    

结果:


传值:







传地址:






引用做形参:



知识点总结:

第一种传值方式无法得到真正转换的原因是这样的转换方式只转换了形参的值,函数调用结束之后,形参的空间释放消失,而最终实参并没有交换。

第二种传地址的方式可以达到效果的原因是实参向形参传递存储单元地址,改变形参指向的单元的值。

第三种引用形参也可以成功的原因是实参和形参共用存储空间,形参交换实参也交换。 

学习心得:

解决问题的方法有很多,需要我们不断尝试。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值