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

来源:互联网 发布:java算法题 编辑:程序博客网 时间:2024/05/01 04:57
/* * Copyright (c++) 2016 烟台大学计算机学院 * All right reserved. * 文件名称:test1.cpp * 作    者: 姜延锴 * 完成日期:2016年9月8日 * 版 本 号:v1.9  * * 问题描述:交换两个整形变量 * 输入描述:两个整数 * 程序输出:交换后的两个整数 *///(1)传值#include<iostream>using namespace std;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);  //分三个程序,分别写上调用myswap的合适形式    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);    return 0;}结果:未成功。形参值的改变不能对实参产生影响//(2)传地址#include<iostream>using namespace std;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);  //分三个程序,分别写上调用myswap的合适形式    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);    return 0;}结果:运行成功原因:函数在调用的时候需要指定地址的实参。这时候的参数传递方式就是地址传递方式,形参指针和实参指针指向同一个地址,因此,被调用函数中对形参指针所指向的地址中的内容的任何改变都会影响到实参//(3)引用作形参#include<iostream>using namespace std;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);  //分三个程序,分别写上调用myswap的合适形式    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);    return 0;}结果:运行成功原因:直接对形参进行操作都会直接改变数据知识点总结: 从这个程序中可以了解到三种传值的不同与优缺点 学习心得: 在指针练习中没加地址符,导致犯错,这是一个注意点,在错误中积累,在实践中成长。

0 0
原创粉丝点击