当前位置:编程学习 > C/C++ >>

自定义函数实现 实际参数的交换

 
[cpp]  
/* 
* 程序的版权和版本声明部分 
* Copyright (c)2012, 烟台大学计算机学院学生 
* All rightsreserved. 
* 文件名称: x.cpp 
* 作者:徐本锡 
* 完成日期: 2012年 12 月20  日 
* 版本号: v1.0 
* 输入描述: 
 
* 问题描述:自定义函数  的实际参数  的交换 
 
* 程序输出: 
 
*/  
//我的代码:  
#include <iostream>  
using namespace std;  
#include <iostream>  
using namespace std;  
void jiaohuan(int x, int y);  
int main(void)  
{  
    int a,b;  
    cin>>a>>b;  
    if (a<b) jiaohuan(a, b);  
    cout<<"a,b="<<a<<","<<b;  
    return 0;  
}  
void jiaohuan(int x, int y)  
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}  
 
分析:
          自定义函数明显是为了实现两个参数的交换,当a<b时调用函数,是为了先输出两个数中较大的值,而实践是检验真理的唯一标准。由实践知,并没有实现两个实际参数的交换。
                  由于实际参数和形式参数被分别分配空间储存,所以实际参数赋值给形式参数,形式参数交换后,自定义函数结束,形式参数储存空间释放。而实际参数并未改变。
 
              
[cpp]  
/* 
* 程序的版权和版本声明部分 
* Copyright (c)2012, 烟台大学计算机学院学生 
* All rightsreserved. 
* 文件名称: x.cpp 
* 作者:徐本锡 
* 完成日期: 2012年 12 月20  日 
* 版本号: v1.0 
* 输入描述: 
 
  * 问题描述:自定义函数  的实际参数  的交换 
   
    * 程序输出: 
     
*/  
//我的代码:  
  
#include <iostream>  
using namespace std;  
void jiaohuan(int *x, int *y);  
int main(void)  
{  
    int a,b;  
    cin>>a>>b;  
    if (a<b) jiaohuan(&a, &b);  
    cout<<"a,b="<<a<<","<<b;  
    return 0;  
}  
void jiaohuan(int *x, int *y)  
{  
    int t;  
    t=*x;  
    *x=*y;  
    *y=t;  
}  
 
 
     分析:
            上个程序实现了交换,因为指针作为实际参数和形式参数所指的是同一个内存区域,当形式参数所指的值改变时,实际参数所指的值会随之变化。
 
[cpp]  
/* 
* 程序的版权和版本声明部分 
* Copyright (c)2012, 烟台大学计算机学院学生 
* All rightsreserved. 
* 文件名称: x.cpp 
* 作者:徐本锡 
* 完成日期: 2012年 12 月20  日 
* 版本号: v1.0 
* 输入描述: 
 
  * 问题描述:自定义函数  的实际参数  的交换 
   
    * 程序输出: 
     
*/  
//我的代码:  
#include <iostream>  
using namespace std;  
void jiaohuan(int &x, int &y);  
int main(void)  
{  
    int a,b;  
    cin>>a>>b;  
    if (a<b) jiaohuan(a, b);  
    cout<<"a,b="<<a<<","<<b;  
    return 0;  
}  
void jiaohuan(int &x, int &y)  
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}  
 
 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,