值传递引用传递指针传递的区别

在编写代码中,参数的传递有几种类型

我们发现参数传递到一个函数内 对参数进行修改 对原本的函数里对应的值有时会发生变换有时又不会 这就是涉及到了参数传递时的方式了

主要分三种

值传递 引用传递 指针传递。

先说个概念 一个变量有两个基本属性 一个是在内存中的地址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中可以实现这种写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值