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

本文介绍了通过三种不同方式(传值、传地址、引用作形参)实现两个整数交换的具体方法,并分析了每种方法的工作原理及优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题与代码

/* 
 *Copyright(c)2015,烟台大学计算机学院 
 *All right reserved. 
 *文件名称:test.cpp 
 *作者:郗传秀
 *完成日期;2015年9月7日 
 *版本号;v1.0 
 * 
 *问题描述:通过输入两个整数,编写三个版本的交换函数,通过分别调用三个版本的交换函数,观察输出结果 
 *输入描述:两个需要交换的整数 
 *程序输出:交换后的两个整数 
*/  
  
#include<stdio.h>  
//(1)传值  
/* 
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; 
} 
*/  
//(2)传地址  
  
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;  
}  
  
//(3)引用作形参  
/* 
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; 
} */

运行结果

1.传值



2.传地址



3.引用做形参


知识点总结:

传值方式无法得到真正转换的原因是这样的转换方式只转换了形参的值,函数调用结束之后,形参的空间释放消失,但最终实参并没有交换

传地址的方式可以达到效果的原因是实参向形参传递存储单元地址,改变形参指向的单元的值

引用形参也可以成功的原因是实参和形参共用存储空间,形参交换实参也交换



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值