zoukankan      html  css  js  c++  java
  • 值传递和引用传递

    值传递:值传递只是把对象的值传入函数,函数中使用的是这个值,而那个对象的值并不会变。

    c语言示例:

    void a(int v) {
        printf(v);
        v++;
        printf(v);
    }
    void main() {
        int b = 0;
        a(b);
        printf(b);
    }
    

     程序输出结果是 010 。

    这里b的值在a函数中被调用,但是b本身没变。其实值传递相当于在函数中新建了一个对象然后对它赋值再使用。在上例中相当于:

    void a(int v) {
        int b = v;
        printf(b);
        b++;
        printf(b);
    }
    

    js语言示例:

    js中基本类型变量的复制是值传的:

    var num1=5;
    var num2=num1;
    num1++;
    console.log(num1+";"+num2);
    

     结果是6;5。

    引用传递:引用传递是将整个对象本身(或地址)传入函数,函数中既可以调用对象的值,还可以改变对象的值。

    c语言示例:

    void a(int* v) {  //传入的参数为指针
        printf(*v);
        *v++;
        printf(*v);
    }
    void main() {
        int b = 0;
        a(&b);   //&的意思是取b的地址(指针)
        printf(b);
    }
    

     这里输出结果是011。说明b的值在函数中被改变了。

    js示例:

    var obj1=new Object();
    obj1.name="syt123";
    var obj2=obj1;
    console.log(obj2.name);//syt123
    obj2.name="123";
    console.log(obj1.name);//123
    
  • 相关阅读:
    Toolbar设置回退箭头的方法
    Android进程绝杀技--forceStop
    线程池的经典使用
    Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
    adb pull apk
    工厂模式_工厂方法模式
    工厂模式_简单工厂模式
    spring_aop
    代理模式_动态代理
    代理模式_静态代理
  • 原文地址:https://www.cnblogs.com/sunyt/p/4725560.html
Copyright © 2011-2022 走看看