[@倚贤][¥20]什么是值传递和引用传递?
                                                    1、得回忆下C语言
int value = 10; int *pointer;  pointer = &value; // 指针poiner引用的value的地址printf('value = %d, pointer = %d n', value, pointer);// 结果是: value = 10, *pointer = 10
value就是个值;*pointer是个指针,其实就是一个引用;pointer = &value 后,pointer值就指向了 value的地址
2、再说说高级语言
简单来说,值传递就是把值类型拷贝一份,引用传递就是把指针(引用)拷贝一份。
Integer num = 10;  // 基本概念: Integer是引用类型,int是值类型。int value = num;  // 值传递Integer pointer = num; // 引用传递
再进一步的,高级语言中自定义类对象都是引用类型。
public class MyClass {
private int value;
// getter, setter ...
}
MyClass inst1 = new MyClass();  // 引用类型,存放在堆上inst1.setValue(10);
MyClass inst2 = inst1;   // 引用传递int value = inst1.getValue();  // 值传递
像C#中的委托(一个函数的指针)也是引用类型,各种 = 赋值操作都是引用传递了。要想再深入理解,就去看看内存模型,像Java、C#都有“堆”和“栈”的概念,学习下值类型和引用类型在内存模型中的存放规则。
                                                    
                                                        赞0
                                                        踩0