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

本文通过三个不同的C++程序示例,展示了函数参数传递的三种常见方式:传值、传地址及引用作为形参,并对比了它们在实际应用中的效果。
/* 
*Copyright (c) 2014,烟台大学计算机学院 
*All rights reserved. 
*文件名称:Cpp1.cpp 
*作者:孙钰坤 
*完成日期:2015年9月11日 
* 
*问题描述:比较函数参数传递的三种方式 
*输入描述:输入a,b的值 
*程序输出:输出传递后a,b的值 
*/ 
 
#include <iostream>   
using namespace std;  
	int main()  
{  
    int a,b;
    void myswap1(int x,int y); //对交换函数myswap1的提前声明   (传值)  
    cout<<"请输入待交换的两个整数:"<<endl;  
    cin>>a>>b;    
	myswap1(a,b);    // 调用传值的交换函数myswap1   
    cout<<"调用传值的交换函数后的结果是:"<<endl;  
    cout<<a<<' '<<b<<endl;  
    cout<<"请输入待交换的两个整数:"<<endl;
	return 0;
}
    void myswap1(int x,int y)//交换函数myswap1的具体定义   
	{  
    int t;  
    t=x;  
    x=y;  
    y=t;
	}


#include <iostream>   
using namespace std;
int main()  
{   
	int a,b;
	void myswap2(int *p1,int *p2); //对交换函数myswap1的提前声明    (传地址)
    cout<<"请输入待交换的两个整数:"<<endl;
    cin>>a>>b;  
    myswap2(&a,&b);    // 调用传地址的交换函数myswap2
    cout<<"调用传地址的交换函数后的结果是:"<<endl;  
    cout<<a<<' '<<b<<endl;   

	return 0;
}
    void myswap2(int *p1,int *p2) //交换函数myswap2的具体定义   
{  
    int t;  
    t=*p1;  
    *p1=*p2;  
    *p2=t;  
}


#include <iostream>   
using namespace std;
int main()  
{
	int a,b;
	cout<<"请输入待交换的两个整数:"<<endl;
	void myswap3(int &x,int &y); //对交换函数myswap1的提前声明  (引用作形参)
    cin>>a>>b;  
    myswap3(a,b);    // 调用以引用作形参的交换函数myswap2   
    cout<<"调用以引用作形参的交换函数后的结果是:"<<endl;  
    cout<<a<<' '<<b<<endl;
	return 0;
}
    void myswap3(int &x,int &y) //交换函数myswap3的具体定义   
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}  


运行结果:

调用传值交换后的两个数是这样的:

 

 

调用传地址交换后的两个数是这样的:

 

使用引用做形参交换过的两个数是这样的:

 

总结:

可以发现  使用传值交换过的两个数还是原来的样子,而另外两种交换方法交换过的数值是颠倒的,原因是在用myswap1进行传值交换时,就只是将两个数的数值交换,对a,b本身没有改变,只是在子函数中交换而没有在main函数中交换,所以不能成功的实现两个数的交换。而调用传地址交换的两个数则是直接对地址指向的内容进行交换故而交换成功。

 

心得:

在这个例题中使用的是C++而不是C,因为C语言基础太差,,有些根本不知道怎么写,,,所以就直接用了最熟悉的方式,抽空一定加紧C语言的学习=。=|||

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值