zoukankan      html  css  js  c++  java
  • 如何证明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;

    }

     

     

    运行结果如下图:

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

  • 相关阅读:
    Sublime Text前端开发环境配置
    CSS盒模型
    Angular-如何在Angular2中使用jQuery及其插件
    六:Angular 指令 (Directives)
    五:Angular 数据绑定 (Data Binding)
    四:Angular 元数据 (Metadata)
    三:Angular 模板 (Templates)
    二:Angular 组件 (Components)
    一:Angular 模块 (Modules)
    js获取浏览器内核
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6471326.html
Copyright © 2011-2022 走看看