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

课程解释的不清不楚

http://img1.sycdn.imooc.com//58dbd9b70001b09607060214.jpg

(2)“&”:引用赋值,意味着两个变量都指向同一个数据。它将使两个变量共享一块内存,如果这个内存存储的数据变了,那么两个变量的值都会发生变化。


教材里说两个变量共享一块内存,这代码的例子里根本没表现出这点啊,哪有共享内存?

分明是再次赋值覆盖了原来的值,$c输出的还是一个值。

我本以为共享意思是c里面会有两个a的值都存在呢。只一个算什么共享内存。

感觉课程里说的乱乱的



正在回答

7 回答

共享内存就是,对这个变量不再分配存储空间,可以理解为$c是$a的一个别名,

如果$a的值改变了,$c的值也会跟着改变

4 回复 有任何疑惑可以回复我~

<?php
    $a = "我在慕课网学习PHP!";
    $b = $a;
    
    $a = "我天天在慕课网学习PHP!";
    $c = &$a;
    
    echo $b."<br />";
    echo $c."<br />";
?>


改变一下    $c = &$a; 和  $a = "我天天在慕课网学习PHP!的的顺序就清楚了;

0 回复 有任何疑惑可以回复我~
#1

qq_慕虎8366744

那这样$b=$a 和$c=&$a不是一个意思了,$a 改变了他们不也都会改变吗
2019-11-28 回复 有任何疑惑可以回复我~

所以到底想表达什么呢?


0 回复 有任何疑惑可以回复我~

$c=& $a

我是这么理解的,变量c引用了  变量a, 因为是应用,当然a的赋值发生变化的时候c也跟着变化,另外a的赋值可写在该赋值的上面或下边

0 回复 有任何疑惑可以回复我~

理论上,我明白课程想表达的意思,但是代码看不懂

输出b为什么是输出第2行的a,而不输出第5行的a ?

输出c为什么是输出第5行的a,而不输出第2行的a ?

第2行的a和第5行的a在这个代码里面有没有顺序先后?


1 回复 有任何疑惑可以回复我~
#1

lszzz

第2行的a已经赋值给b了啊,第4行 a和c共享数据 所以c输出的是第5行的a啊
2018-07-30 回复 有任何疑惑可以回复我~
#2

慕仰4757031

我也这么觉得
2018-12-13 回复 有任何疑惑可以回复我~

<?php 

    $a = "我在慕课网学习PHP!";

$b = $a;

$a = "我天天在慕课网学习PHP!";

$c = &$a;

echo $b."<br />";

echo $c."<br />";

?>

如果这样输出的结果是不是也一样的呢,把$c放到新赋值的后面这样


0 回复 有任何疑惑可以回复我~

c与a是指向同一片地址的

即c是取a指向地址存储的数据,a和c是同步的。

那么a地址里存储的值变了,c也跟着变。 

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

课程解释的不清不楚

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信