为了账号安全,请及时绑定邮箱和手机立即绑定

php的引用不是指针到底是什么,看看这个输出结果

php的引用不是指针到底是什么,看看这个输出结果

潇湘沐 2019-04-19 16:11:11
上面是我自己运行的结果。手册上是这么说的,不知道说的是什么:引用不是什么如前所述,引用不是指针。这意味着下面的结构不会产生你预期的效果:这将使foo函数中的$var变量在函数调用时和$bar绑定在一起,但接着又被重新绑定到了$GLOBALS["baz"]上面。不可能通过引用机制将$bar在函数调用范围内绑定到别的变量上面,因为在函数foo中并没有变量$bar(它被表示为$var,但是$var只有变量内容而没有调用符号表中的名字到值的绑定)。自己的理解是$c已经是一个引用了,PHP不允许再给它赋上另一个引用。如果再给它赋上另一个引用,那么这个引用$c就跟$a变量自动断开联系,所以输出了两个2。不知道这样理解对不对
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超5个赞

你理解的是对的。引用也是相对于整数,浮点型的一种数据类型,给它赋另外一个值当然就把原本的给覆盖掉了。另外为什么unset()函数可以断开引用的关系,这是这么个道理。
                            
查看完整回答
反对 回复 2019-04-19
?
莫回无

TA贡献1865条经验 获得超7个赞

不知道你理解得意思但这个就是C中指针得标准结果吧第一个形参是个引用,但$a传的是变量,变量内存得内容是2,&$a才是指针,&$a表达式得值是a代表得内存得地址第一个foo中你传递一个$a就是传了个2,这那是a得地址啊。而且就算是c语言中foo(int*p)你调用时foo(&a);然后你a=2,最后在printa,他输出得也是2啊,你的print星a(这个星打不出来)!
你不传地址怎么可能改变外部变量呢?你得传地址!我还真就没理解php中的引用,和c中的指针有什么区别
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 343 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号