传值与传引用。。百度了一下,对引用还是不太明白引用难懂

解决方案 »

  1.   

    传值就像copy
    比如:
    ----------
    $b = 1;
    $a = $b;
    $a = 2;
    echo $b;//still out put 1
    此时内存会自动分配个存储空间给$a,形式是一个地址,一个存储值的单元,地址指向值.
    当$a指向的值改变时,它处理的是$a的存储空间,不影响$b.就好像你回家,拿钥匙(地址),开门,家里的东西都是你的(存储单元)
    别人回别人家干什么,不关你的事.$b = 1;
    $a = &$b;
    $a = 2;
    echo $b;//now change,will output 2
    传引用,意即$a,$b拥有同样的地址,当$a所指向的值发生变动时,它处理的是$a,$b共有的存储
    空间,所有$b当然也改变了.就好像你的亲人和你都拥有家里的钥匙(地址),他从家里拿走一些东西(改变单元值),那家里东西不就改变了吗.
      

  2.   

    ....我说的不够好,容易让你误解.如果有空余时间,你可以找本c语言看看.如果不想深究,知道个大概原理就行了.拿买房和租房来打比方:$a = $b
    =========================================================
    相当于买房,$b是你好朋友的一栋房,地址在:XXXXXXX.
    你现在买了一栋房$a,规格和$b一摸一样,但是地址在:YYYYYYY.
    房子是你的,你爱怎么装修怎么装修,ok?$a = &$b
    =======================================================
    相当于租房,$b是你好朋友的一栋房,地址在:XXXXXXX.
    你决定租你好朋友的房住进去.
    你对外宣称,现在住的房子是$a,其实就是$b,因为地址一摸一样啊.
    你总不会租房装修吧?
      

  3.   


    因为网上的资料都涉及一些 从c++的其他的概念,我不能一下子消化了这么多的从c++的概念、、我试试从新规纳朋友的信息:$a = $b;内存单元是不同的,只是解析(php为解析性语言)的时候,联系在一起。
    把把$b 的内容放到 $a,$b的内容当然是不会随着$a 变化的。
    -----------------------
    此时内存会自动分配个存储空间给$a,形式是一个地址,一个存储值的单元,地址指向值.
    这句是朋友说错了还是怎么了呢我发觉怎么解析都理解不了。
    -----------------------$a = &$b;按照朋友的看法:很明显他们是内存单元是相同的,只是这个内存单元比较特别:有两个名称。。而且还有其他的特点。这个其他特点就是小弟不理解的了——————————————————————————————
    内存单元:可以有三样东西1: 地址。
    2:名称.
    3:内容。地址是唯一的,名称是可以多个的,内容如果不是类型定义为常量的话是可以变的。不知道小弟说的以上有没有知识错误。
    ——————————————————————$a = &$b;按照朋友的看法:很明显他们是内存单元是相同的,只是这个内存单元比较特别:有两个名称。。而且还有其他的特点。这个其他特点就是小弟不理解的了
      

  4.   

    呵呵,c++ 可以通过指针指向变量的引用获取变量的地址,php是做不到的.
    把引用说成变量的'别名',不要说成地址什么的,这样好理解点.
      

  5.   

    传值 相当于a给了copy了气球,送给了b,你不管怎么操作,哪怕把它弄坏,a手里的还是原封未动,
    引用传值 相当于a把本身的气球给了b,b在上面进行涂写等,然后在给a,气球就发生的变化,
      

  6.   

    Fly_yang() ( ) ,朋友我恳请你了,,,不要在做比比喻了好不好呢
      

  7.   

    既然"c 语言还是在行的"
    那么理解c中
    a =& b;
    的意义应该是没有问题的了
    由于c代码将被编译成机器指令,所以变量a、b 将指向同一个内存地址php是由c语言程序员创造的,所以继承了绝大部分的c语法元素
    $a =& $b;
    从实用意义上而言,与c语言并没有什么差别
    但由于php是解释执行的,所以变量地址并不可能是物理地址,而只能是一个列表项