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

2300人阅读 评论(1) 收藏 举报

                                                                               朱金灿

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;

}

 

 

运行结果如下图:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3844580次
    • 积分:43404
    • 等级:
    • 排名:第79名
    • 原创:749篇
    • 转载:80篇
    • 译文:3篇
    • 评论:2419条
    公告


    真名:朱金灿
    主要经历:本科毕业于CUG(武汉)的GIS专业,毕业后参加工作,现在在北京从事软件开发和团队管理工作。曾获有色金属工业科技进步奖二等奖(获奖证书链接)。
    我的联系方式:
    EMAIL:clever101#163.com
    研究方向:
    数字图像处理、计算机图形学。

    本博客内容除非特殊说明均属原创,如需转载、引用其中的部分文字,请注意以下几点:

    1)如果我的博客侵犯了你的版权,请给我邮件:clever101#163.com,经核实后我会做出合适的处理。

    2)请在转载(引用)的内容提供本博客中相应文章的链接。如你的作品为非电子读物或纯文本,请给出链接的url。

    3)请勿将我的原创文章用于商业用途。

    4)如果愿意,请给我邮件:clever101#163.com,让我知道我的东西到哪去了。谢谢!

    5)我可以尽我所能回复你在评论中提到的问题,但一般不会给你发邮件,所以请勿留邮箱地址.

    文章存档
    最新评论