在编写代码中,参数的传递有几种类型
我们发现参数传递到一个函数内 对参数进行修改 对原本的函数里对应的值有时会发生变换有时又不会 这就是涉及到了参数传递时的方式了
主要分三种
值传递 引用传递 指针传递。
先说个概念 一个变量有两个基本属性 一个是在内存中的地址adress 一个是内存中这个地址上记录的值value
例如用go为例子
第一个值是在内存中的地址
第二个值就是这个变量保存的值
值传递来说
原函数变量a的地址设为0x1 值为1
传递的函数变量b的地址为0x2 并不等于a的地址 但值相同 都是1
对于引用传递
原函数变量a的地址设为0x1 值为一个地址0x3
传递的函数变量b的地址为0x2 并不等于a的地址 但值等于a的值0x3 也就是b的值保存的是a变量的值 指向的都是内存中的同一个地址 那么b要修改值时 在原来的a的值也会跟着改变 因为底层修改的值是同一个
对于指针传递
原函数变量a的地址设为0x1 值为1
传递的函数变量b的地址为0x2 值等于0x1 也就是a的地址 所以修改b的值时 语法糖会重定向到a的地址 修改的也是同一份数据
还有一种 是作者自己想的 前面讲的都是a和b的地址并不相同。那么假如a和b的地址都是0x1这种呢 我叫它为相同传递。 那么值的修改也是修改同一份 在php中可以实现这种写法