函数、对象在内存中存在形式

一、php底层内存分区


php将内存分为5个区。堆区一般存对象,栈区一般存基本数据类型(普通变量……)和函数,全局区存全局变量和静态变量,常量区存常量,代码区存代码。

二、函数调用时栈区变化


这是一个简单的递归函数示例。当主函数调用counts函数时,开辟一个新栈,执行counts函数代码。当最后$n等于0时执行return语句返回,且销毁栈。以此类推,函数最后返回到主函数继续往下执行代码,并输出$sum。此时开辟的新栈均被销毁。

因为函数调用时会开辟新栈,且默认值传递,所以形参无法改变实参。若在上图中echo $sum代码后加上echo $n代码则输出n值为3。因echo输出的是原栈区的$n,而不是新栈区的$n。

三、引用实质是传递地址


四、对象在内存中存在形式


输出为:

小明

小明


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值