zoukankan      html  css  js  c++  java
  • c的指针和php中的引用的区别

    https://blog.csdn.net/yangfanzn/article/details/44731391

    1-php和c中的变量名都会被解析成内存地址,变量名所代表的内存的地址中内容即代表变量的内容,但由于指针的跳转,这个内容往往并不那么明显


    2-在c中不同的变量名即代表不同的内存地址,这个是一一对应的,但是在php中不同的变量名可以代表相同的内存地址,这就是php中所谓引用别名的基础,和c的指针很像,却又有差别


    3-举个例子,对于变量a变量b,所在内存中都存储变量地址(指针)20011,在c中变量a和变量b的所解析的内存地址一定是不同的,分别是10011和10012,他们都同时指向20011,但是在php中变量a和变量b就是一样的,都是10011,那么自然指向相同的内存地址20011

    4-(假设)php中所有内容都不是直接被变量所解析的内存地址所存储,往往都需要进行一轮指针的跳转,原因就是在php中所有的变量都可用被unset以打断变量名所解析的内存地址中真正内容内存地址的连接,当然这个前提假定是变量名解析为内存地址这个过程是不可打断的

    5-综上,c中的指针和php中的引用就非常相似,下面就php的具体实现简述差别
    -->1.在数组中,数组索引或关联key可用被理解为数组中的变量名,用于在数组中解码为内存地址,在数组中进一步寻址,用unset数组元素,可打断连接,并完全令其在数组中消失,但是在循环中用&value的方式进行unset(value)是无法删除元素的,其打断的只是value与元素的连接,真正数组元素arr['x'/0]并为打断,但是如果value也是数组,就可用unset(value['x'/0])的方式删除元素,次影响会波及最初的数组
    -->2.如果数组中的某个元素本身就是某个变量的引用或者别名,那么即使对这个数组进行复制,那么复制后的变量依然保有之前的引用连接,对于此类数组传值给函数也是如此,这里隐含了一点:普通的变量和引用的变量天生就是有区别的,并是可区别的
    -->3.如果对一个未定义的变量进行引用赋值、引用参数传递或引用返回,则会自动创建该变量。为什么要这么强调?因为这些操作往往都是作为右值出现的,如果右值未定义,一般都是会报错的,但是这里就被自动创建(null),这里的未定义变量,除了一般简单变量外,还包括数组元素和对象属性
    ---->引用赋值,对象赋值自动引用,无需&
    ---->引用参数传递,仅在函数定义中有&,函数调用中无&,否则报不推荐警告,变量、new、函数引用返回可用做引用传递,其他任何表达式都不得做函数引用传递
    ---->函数引用返回,要在两处定义&(函数定义名前、函数调用名前),返回的只能是变量,不能是new或其他任何表达式,这点是和上面不同的,另外返回的变量即可用是静态变量,也可用是局部变量,或私有或公共属性
    -->4.特别的不是指针的区别,如果x=&a;x=&b;并不会产生如下步骤,a的指针地址给x,x指向的a获得b的地址,最后使a中存储b的地址内容,当然其实涉及自动化完成的地址取值的过程,如下是php官方例子。总之紧记,php中的引用就是别名,上面和下面的例子,仅仅是别名的变换而已,并不存在指针的赋值取值操作,但是,一般在引用后的单独使用时,二者还是极其相似的
    <?php
    function foo(&$var)
    {
        $var =& $GLOBALS["baz"];
    }
    foo($bar);
    ?>

  • 相关阅读:
    网络处理1-异步GET请求
    &lt;十二&gt;读&lt;&lt;大话设计模式&gt;&gt;之状态模式
    oracle的shared、dedicated模式解析
    java 调用ant的自己定义task,默认不是build.xml 的一点问题
    【Android开发-8】生命周期,Activity中打开另外一个Activity
    Robot Framework自己主动化測试框架之我见
    三张图教你生成一个Android jar 库。
    Array types are now written with the brackets around the element type问题的解决方法
    HDU 4085 Peach Blossom Spring 斯坦纳树 状态压缩DP+SPFA
    Java 线程池ThreadPoolExecutor简单应用
  • 原文地址:https://www.cnblogs.com/dongruiha/p/9528063.html
Copyright © 2011-2022 走看看