第2周SHH数据结构—【项目1 - C/C++语言中函数参数传递的三种方式】

(1)值传递

#include<stdio.h>  
void myswap(int,int);  
int main()  
{  
    int a, b;  
    printf("请输入待交换的两个整数:");  
    scanf("%d %d", &a, &b);  
    myswap(a,b);  //分三个程序,分别写上调用myswap的合适形式   
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);  
    return 0;  
}  
//(1)传值   
void myswap(int x, int y)  
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}<img src="http://img.blog.csdn.net/20150911084806259?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
结论:在学习了一年C++后很明显可以看出来这个程序不能实现,调用函数本身不对实参进行操作,只改变形参,因此实参的值不受影响。

(2)地址传递

#include<stdio.h>   
void myswap(int *,int *);  
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;  
}  
第2周SHH数据结构—【项目1 - C/C++语言中函数参数传递的三种方式】_第1张图片

结论:从程序可以看出,该程序是把实参的地址赋给形参,最后实现实参和形参的转换。

(3.)引用传递

#include<stdio.h>   

void myswap(int &,int &);  

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;  

}  

第2周SHH数据结构—【项目1 - C/C++语言中函数参数传递的三种方式】_第2张图片

结论:由运行结果看,进行了交换。如果以引用为参数,则既可以使得对形参的任何操作都能改变相应的数据,又使得函数调用显得方便、自然。引用传递方式是在函数定义时在形参前面加上引用运算符“&”。

知识点总结:

此程序考察了我们对这3种传递方式的理解,掌握它们有助于我们以后的学习。



 

你可能感兴趣的:(第2周SHH数据结构—【项目1 - C/C++语言中函数参数传递的三种方式】)