函数调用:传值与传址

一.传值调用

特点:形参取的是实参的值,形参的改变不会导致调用点所传实参的值发生改变 。相当于copy

例题:

void swap (int x, int y)
    {   int t;
        t= x;  x=y;  y=t;
        printf ("%d %d",x,y);

    }

main()
    {
        int a=3 ,b=4;
        swap (a,b);
        printf("%d %d",a,b);

    }

解:

传值时,a,b,x,y都有存储空间,相当于把a的值传给x,把b的值传给y。x,y的值copy了a,b的值。

因为是传值,所以调用swap方法之后,a,b的值不会有所改变

所以输出的结果为4,3,3,4

二.传址调用

特点: 形参取得是实参的地址,即相当于实参存储单元的地址引用因此其值的改变同时就改变了实参的值。

例题:

void swap (int *x, int *y)
    {   int *t;
        *t= *x;  *x=*y;  *y=*t;
        printf ("%d %d",*x,*y);

    }

main()
    {
        int a=3 ,b=4;
        swap (a,b);
        printf("%d %d",a,b);

    }

解:

传址:如代码所示,x,y均带有*(星号),说明x,y是指针。

x,y指向了a,b的存储空间,因为指向的是a,b的存储空间,当交换x,y值的时候,a,b的值也会随之而变化

与传值不同的是:传址的x,y指向了a,b的存储空间

所以输出结果为:4,3,4,3

猜你喜欢

转载自blog.csdn.net/weixin_44690047/article/details/114916263
今日推荐