C/C++语言中函数参数传递的三种方式

问题及代码:

/* 
* Copyright (c) 2015, 烟台大学计算机与控制工程学院 
* All rights reserved. 
* 文件名称:cpp1.cpp 
* 作者:高哲 
* 完成日期:2015年12月7日 
* 版本号:v6.0  
* 问题描述:C语言中函数参数传递的三种方式 
* 输入描述:两个待交换的整数  
* 程序输出:交换后得两个整数 
*/  

#include<stdio.h>  
void myswap(int x, int y)  
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}  
int main()  
{  
    int a, b;  
    printf("请输入待交换的两个整数:");  
    scanf("%d %d", &a, &b);  
    myswap(a,b);  //作为对比,直接交换两个整数,显然不行  
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);  
    return 0;  
}  

#include<stdio.h>  
void myswap(int *p1, int *p2)  
{  
    int  t;  
    t=*p1;  
    *p1=*p2;  
    *p2=t;  
}  
int main()  
{  
    int a, b;  
    printf("请输入待交换的两个整数:");  
    scanf("%d %d", &a, &b);  
    myswap(&a,&b);  //交换两个整数的地址  
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);  
    return 0;  
}  
#include<stdio.h>  
void myswap(int &x, int &y)  
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}  
  
int main()  
{  
    int a, b;  
    printf("请输入待交换的两个整数:");  
    scanf("%d %d", &a, &b);  
    myswap(a,b);  //直接以变量a和b作为实参交换  
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);  
    return 0;  
}  

第一个运行结果:

第2个运行结果:

第3个运行结果:


C/C++语言中函数参数传递的三种方式_第1张图片

学习心得:

在第一个程序中,传值不成功的原因是指在形参上改变了数值,没有在实参上改变数值。

在第二个程序中,传地址成功的原因利用指针改变了原来的地址,所以实参就交换了。

在第三个程序中,引用是直接改变两个实参变量a,b的值,所以就交换了。


你可能感兴趣的:(C/C++语言中函数参数传递的三种方式)