php开源嘛
首页 | English | MySql数据库 | Php编程 | 建站杂烩 | 系统服务器 | 资源共享 | 专题 | 才桀网 | 支持论坛
  当前位置:主页>Php编程>文章内容
PHP传值和传引用、传地址的区别是什么?
来源:收集整理 作者:本站整理 发布时间:2008-03-06  

PHP传值和传引用、传地址的区别是什么?

传值,   
  是把实参的值赋值给行参   
  那么对行参的修改,不会影响实参的值   
   
  传地址   
  是传值的一种特殊方式,只是他传递的是地址,不是普通的如int   
  那么传地址以后,实参和行参都指向同一个对象   
   
  传引用   
  真正的以地址的方式传递参数   
  传递以后,行参和实参都是同一个对象,只是他们名字不同而已   
  对行参的修改将影响实参的值

-----------------------------------------------------------------------------------

觉得从函数调用的角度理解比较好   
   
  传值:   
  函数参数压栈的是参数的副本。   
  任何的修改是在副本上作用,没有作用在原来的变量上。   
   
  传指针:   
  压栈的是指针变量的副本。   
  当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。   
   
  传引用:   
  压栈的是引用的副本。由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作。(作用和传指针一样,只是引用少了解指针的草纸)  

-----------------------------------------------------------------------------------
函数参数传递机制的基本理论   
    函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。   
    值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。   
    引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的   
  实参变量。   


-----------------------------------------------------------------------------------

仅讨论一下值传递和引用:   
  所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重新开辟一个完全相同的内存空间。   
  所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。此时,如果对目标对象进行修改,内存中的数据也会改变。


(阅读次数:
上一篇:PHP面向对象OOP编程快速入门...   下一篇:开发大型php项目的方法、oop面向对象
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·PHP生成验证码图片的源代码
·PHP会话对(Session)使用入门
·Php部分常见问题总结[bug]
·php正则表达式的快速学习方法
·高手传经:学习PHP重在坚持
·用php生成静态页面的php函数
·PHP对文本数据库的基本操作方法
·用 PHP 读取文件的正确方法
·讲解PHP+MySQL的分页显示示例
·用PHP构建一个简易监视引擎
·我是怎样打造简单的PHP&MYSQL留
·用PHP实现表单验证码登陆校验
  相关文章
·PHP面向对象OOP编程快速入门...
·开发大型php项目的方法、oop面向
·怎样用php操作php文件的……
·面向对象OOP的5原则:单一职责原
·PHP中的面向对象和面向过程OOP…
·面向对象OOP的5原则:开放封闭原
·OOP面向对象:Liskov替换原则--L
·依赖倒置原则(DIP) OOP面向对象.
·Web2.0时代PHP将受更多人的青睐
·增加PHP的Session存储和处理能力
·面向对象OOP的5原则:接口隔离原
·PHP5的DirectoryIterators递归扫

关于我们 | 本站声明 | 友情连接 | 诚邀加盟 | 网站地图
版权Power by DedeCms   技术支持QQ =>> 罗江游鱼   Jacking  后台登陆
Copyright @ 2007 公司地址:柳州市东环路268号 邮编:545006 电话:15920389818 桂ICP备07006725号