如何证明C语言函数参数的转递是单值传递

                                                                               朱金灿

C语言函数使用中函数参数的传递是单值转递,即把实参传递给形参,就是把实参复制一份传给形参。如何证明这一点呢?我想到了一个方法,就是在调用函数和被调用函数都输出实参和形参的地址。如果地址一致那么就是双向传递,如果地址不一致,就是单向传递。

例程如下:

#include <iostream.h>

 

void Fun(int a,int b)

{

       cout<<&a<<endl;

       cout<<&b<<endl;

}

 

int main(void)

{

    int a;

    int b;

       cout<<&a<<endl;

       cout<<&b<<endl;

       Fun(a,b);

       return 0;

}

 

 

运行结果如下图:

现在我们可以清楚地看到,实参和形参的地址不一样。也就是说当传值进去时,它们的值是一样的,但它们的地址不一样,因此一旦改变形参的值,实参就不能相应地改变。这样我们也可以更好地理解为什么传指针进去可以改变实参的值。其实道理是一样的。传指针进去,我们一般不去直接改变指针的值,而是去改变指针所指的值,这样实际上就是形参和实参的地址是一样的,改变了形参,实参也作相应的变动。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clever101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值