【第2周 项目1-c++语言中函数参数传递的三种方式】

/*
 *Copyright(c) 2015级,烟台大学 计算机与控制工程学院
 *All rights reserved.
 *文件名称:main.cpp
 *作    者:胡馨月
 *完成日期:2016.9.8
 *版 本 号:v1.0
 *
 *问题描述:将输入的两个数实行交换,并输出。
 *输入描述:待交换的两个整数。
 *程序输出:交换后的结果。
*/
#include <iostream>
using namespace std;
void myswap1(int x,int y); //对交换函数myswap1的提前声明   (传值)
void myswap2(int *p1,int *p2); //对交换函数myswap1的提前声明    (传地址)
void myswap3(int &x,int &y); //对交换函数myswap1的提前声明  (引用作形参)
int main()
{
    int a,b;
    cout<<"请输入待交换的两个整数:"<<endl;
    cin>>a>>b;
    myswap1(a,b);    // 调用传值的交换函数myswap1
    cout<<"调用传值的交换函数后的结果是:"<<endl;
    cout<<a<<' '<<b<<endl;
    cout<<"请输入待交换的两个整数:"<<endl;
    cin>>a>>b;
    myswap2(&a,&b);    // 调用传地址的交换函数myswap2
    cout<<"调用传地址的交换函数后的结果是:"<<endl;
    cout<<a<<' '<<b<<endl;
    cout<<"请输入待交换的两个整数:"<<endl;
    cin>>a>>b;
    myswap3(a,b);    // 调用以引用作形参的交换函数myswap2
    cout<<"调用以引用作形参的交换函数后的结果是:"<<endl;
    cout<<a<<' '<<b<<endl;
    return 0;
}
void myswap1(int x,int y)//交换函数myswap1的具体定义
{
    int t;  
    t=x;
    x=y;
    y=t;
}
void myswap2(int *p1,int *p2) //交换函数myswap2的具体定义
{
    int t;
    t=*p1;
    *p1=*p2;
    *p2=t;
}
void myswap3(int &x,int &y) //交换函数myswap3的具体定义
{
    int t;
    t=x;
    x=y;
    y=t;
}

运行图片: 

 

心得:掌握指针、地址、实参到形参的传递过程。

知识点总结:①实参到形参数值传递的过程是单向,形参和实参都会单独开辟内存空间,在传值交换函数myswap1中交换后只是x和y 的值交换了。但这样的变化并不会影响不在同一个储存单元的a和b,实现不了a和b的交换。
②传地址的交换函数myswap2.在调用myswap2函数时,已经把整数a和b 的地址作为实参传递给形参。在函数具体实现过程中也是对地址所指向的内存单元的内容进行交换,能实现a和b的交换。
③对于以引用做形参的函数myswap3.就是一个内存空间有两个名字,在myswap3函数中对x和y的交换即是对a和b的交换,能实现a和b的转换。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值