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

第二周项目1 C/C++语言中函数参数传递的三种方式_第1张图片/*
*文件名称:cpp.cpp
*作者    :王超
*完成日期:2015.9.7
*问题描述:C/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);  //分三个程序,分别写上调用myswap的合适形式
    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);  //分三个程序,分别写上调用myswap的合适形式
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
    return 0;
}

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

#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);  //分三个程序,分别写上调用myswap的合适形式
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
    return 0;
}

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

 

 

知识点总结:第一种失败的原因是因为a,b分别占两个空间,当调用想,x y的时候,又给x y分配了两个空间,然后a 的值传递给了x,b的值传递给了y,当我们借用t交换了x y的值但是只是交换形式参数的值,最后输出的还是原本的a b的值,所以交换失败。第二种调用&a&b ,x作为一个指针指向a,x=2,y作为一个指针指向b,y=3,随后t=x所指向的值,t=2,x=y所指向的值,x=3,最后y=t的值=3,所以交换成功。最后一种,用到引用数据类型,a=2,b=3,同样的xy跟ab占用同样的空间,所以交换xy的值就是交换了ab的值。

 

学习心得:

综合运用几个知识点,灵活运用

 

 

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