php基础(3)_变量传值

变量传值定义:将一个变量赋值给另外一个变量

变量传值一共有两种方式:值传递,引用传递

值传递:将变量保存的值复制一份,然后将新的值给另外一个变量保存。(两个变量值暂时相同但是变量地址不同)
//好比我家来了一只野猫,在我家也有一只(值相同,都是猫),但是我的猫和野猫的家是来自不同的地方。(地址可变)
引用传递:将变量保存的值所在的内存地址,传递给另外一个变量:两个变量指向同一块内存空间。(两个变量地址一样指向同一个数值)
//现在野猫找到新主人,不回去了(地址相同,现在都是我家的),既然是我家的,那么就不分野猫家猫,都是我的宠物猫(值暂时都相同,都是我的宠物猫)

在内存中,通常有以下几个分区

栈区:程序可以操作的内容部分(不存数据,运行程序代码),少但是快
代码段:存储程序的内存部分(不执行)
数据段:存储普通数据(全局区和静态区)
堆区:存储复杂数据,大但是效率低

值传递:(如图)

1、代码装载:从脚本文件中将代码读取出来,进行编译,将编译的结果存放在代码段(字节码)
2、代码执行:从代码段中一行一行的执行代码
   2.1 执行$a=1:在栈区开辟一块内存存储$a,在数据段中开辟一块内存保存值1,然后将1所在的位置赋值给a变量
   2.2 执行$b=$a:栈区开辟存储$b:发现是赋值运算,会取出$a的值,重新在数据段存储,内存新增地址赋值给b变量


   2.3 执行$b=2
3、脚本执行结束:系统会回收所有的内存(栈区、代码段)


引用传递:(如图)

语法:$新变量=&$老变量

1、代码装载:从脚本文件中将代码读取出来,进行编译,将编译的结果存放在代码段(字节码)
2、代码执行:从代码段中一行一行的执行代码
   2.1 执行$a=1:在栈区开辟一块内存存储$a,在数据段中开辟一块内存保存值1,然后将1所在的位置赋值给a变量
   2.2 执行$b=&$a:栈区开辟存储$b:发现是赋值运算,而且是引用赋值,会取出$a所保存的内存地址,将内存地址赋值给b变量(好处是数据的空间被很好的利用,不用重复)


   2.3 执行$b=2
3、脚本执行结束:系统会回收所有的内存(栈区、代码段)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值