一 、值传递
测试:
分析:
值传递的过程中会给形参分配一个同等类型的内存空间,将实参的内容深拷贝到为该形参分配的内存空间中,后续都是对形参的这块空间进行操作,对实参的内存空间没有影响;
二 、引用传值
测试:
分析:
引用传值,在函数中不用重新分配一个类型空间,形参其实是实参所在的那个内存空间的别名(另外取得一个名字),对形参的操作也可以认为是对实参的操作;
三 、指针传值
测试:
分析:
指针传值,会给形参分配一个形参类型的指针内存空间,这个指针内存空间里存储的是实参的内存地址,这个形参指向的是实参的那块内存,因此可以利用形参索引到实参的内存对实参进行更改以及获取实参的数据内容,但当形参存储的地址变化后,将失去对实参的索引。
三种参数传递方式可以总结为:
指针的三种传递方式也是类似的:
值传递:
分配一块指针空间,将实参中存储的地址拷贝到分配的指针空间中,上述赋值是直接改变这块指针空间存储的地址,不会改变实参存储的地址,因此函数运行完不会对名字进行更改。
引用传递:
形参中的name和实参中的name共用同一块内存,形参中name存储的地址改变,相应的也就是实参中存储的地址的改变。
指针传递:
将实参name的地址赋值给形参的name,即形参name指向的内存块就是实参name内容,因此给形参指向内存块赋值就相当于改变实参name中的地址指向。