传值,传指针和引用的区别:
传值:是实参传值给形参,单向传值,实参->形参,形参后来的修改不影响实参。
传地址:传地址是把实参的地址拷贝给形参。拷贝完成后,对形参地址的修改不会影响实参的地址。但是对形参指向对象的修改,会影响实参指向的对象,因为形参和实参都指向同一个对象。
传引用:传引用的本质没有任何实参形参的拷贝。两个变量同时指向一个对象。对形参的修改也会反映在实参上。
值传递时函数操作的并不是实参本身,形参和实参是相互独立的,所以对形参进行操作并不会改变实参的值。
引用传递操作地址是实参地址 ,形参相当于实参的一个别名,对它的操作就是对实参的操作。
指针传递时,可以通过指针操作实参,同样可以改变实参的值。
指针和引用的区别:
相同点:都是地址的概念
指针指向一块内存,指针的内容是所指内存的地址。
引用:某块内存的别名
不同点:
指针是一个实体,而引用仅仅是个别名
引用只能在定义时被初始化一次,之后不可变;指针可变。
引用“从一而终” 指针“见异思迁”
引用不能为空 指针可以为空
引用是类型安全的,而指针不是