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

问题及代码:

传值:

/*
*烟台大学计控学院
*文件名称:cpp2
*作    者:杨征
*完成日期:2015年9月27日
*问题描述:交换两个整型变量的三种方式
*输入描述:输入两个整型变量
*输出描述:输出交换后的两个整型变量
*/
#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;
}


 

 

传地址:

/*
*烟台大学计控学院
*文件名称:cpp2
*作    者:杨征
*完成日期:2015年9月27日
*问题描述:交换两个整型变量的三种方式
*输入描述:输入两个整型变量
*输出描述:输出交换后的两个整型变量
*/
#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;
}

引用作形参:

/*
*烟台大学计控学院
*文件名称:cpp2
*作    者:杨征
*完成日期:2015年9月27日
*问题描述:交换两个整型变量的三种方式
*输入描述:输入两个整型变量
*输出描述:输出交换后的两个整型变量
*/
#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、付费专栏及课程。

余额充值