php代码 $a = 10; $b = & $a; $c = 100; $a = &$c; echo $b; echo $a;
上述代码,$b空间存的是$a的地址,$b通过地址找到$a里存到具体的值,现在把$a空间里存的内容换成存$c的地址,为什么$b还能找到10这个值,$a这个地址里存的内容不是...
上述代码,$b空间存的是$a的地址,$b通过地址找到$a里存到具体的值,现在把$a空间里存的内容换成存$c的地址,为什么$b还能找到10这个值,$a这个地址里存的内容不是从具体的10变成了$c的地址了吗?求大神们解除一下我的困惑?
展开
2个回答
展开全部
不画图还真不好说,你理解的还不够深入
首先$a = 10; 假设分配了一个地址为A的内存空间给$a并存值10.
然后$b = &$a 这样就把大A这个地址也给了$b(如果不加&的话就会又分配一个空间给$b,加了就直接映射到A)
$c = 100,又分配一个地址为C的空间存了值100
$a = &$c 关键就在这了,这个时候你把刚刚的C的地址付给了$a,但是原来大A的值是没有变得,$b仍然是映射的A的这个地址 只不过$a换了个地址指到C去了。你这里如果不传址,而传值的话,就会把A里的值给改了,$b也就改了。
打个比方就是原来$a 是一楼住户,里面有10个美女
然后$b你告诉他他也是一楼的。
$c是二楼的,有100个美女。
然后你现在告诉$a你不是一楼的了,你给换到二楼去了!
也不知道你听懂没,反正你自己捋捋,就明白传值跟传址的含义了
首先$a = 10; 假设分配了一个地址为A的内存空间给$a并存值10.
然后$b = &$a 这样就把大A这个地址也给了$b(如果不加&的话就会又分配一个空间给$b,加了就直接映射到A)
$c = 100,又分配一个地址为C的空间存了值100
$a = &$c 关键就在这了,这个时候你把刚刚的C的地址付给了$a,但是原来大A的值是没有变得,$b仍然是映射的A的这个地址 只不过$a换了个地址指到C去了。你这里如果不传址,而传值的话,就会把A里的值给改了,$b也就改了。
打个比方就是原来$a 是一楼住户,里面有10个美女
然后$b你告诉他他也是一楼的。
$c是二楼的,有100个美女。
然后你现在告诉$a你不是一楼的了,你给换到二楼去了!
也不知道你听懂没,反正你自己捋捋,就明白传值跟传址的含义了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询