记录一下吧

PHP的的指针的特性:
1,用=&来把变量的地址传给另一个变量,这样,另一个变量就指向了同一个地址
2,用$c=$p;其中$p为指针,像这样的赋值,其实是把相当于让$c引用了$p所指的变量,而不是地址
3,普通的=号是把一个变量的引用传给另一个变量,如果源变量的内容不变,那么引用它的变量的内容也不会变,即当没有修改变量内容的时候,两个变量是指向同一个地址,但当源变量修改时,引用它的变量就会把源变量的内容复制一份出来放到一个新的内存地址中,引用它的变量则是指向这个新创建的内存地址,用简单的一句话概况就是:修改时复制
4,所以,回到(2),如果$p指向的内容发生了变化,那么,也会自动复制一份$p原来的内容到一块新的内存地址中,当用echo输出$c的时候,输出的内容还是$p的内容发生改变前的内容。
5,综上所述,可以推导出(并且也经过实验证明了),如果有$a,$b=&$a,那么你修改a时,b的内容也会随之改变,如果你想再用c来引用b,并且在a改变时也能影响到c,那么必须如下这样写:
$a="aa";
$b=&$a;
$c=&$b; 
如此这般,当a变化时,用echo输出b和c的结果和a的内容是一样的,当然这样是为了说明php指针的特性,并不特意想说明他在具体应用中会有什么用,只是为了更加深刻的理解php的指针。
如果上面的三行代码最后一行变成:$c=$b;
那么在a发生改变时,输出c的值还是a原来的值。
$a='aa';
$b=$a;
$a='bb';
echo $b;exit;// aa
$a='aa';
$b=&$a;
$a='bb';
echo $b;exit;// bb

PHP的的指针的特性相关推荐

  1. c语言char指针用法,整理C语言中各种类型指针的特性与用法

    2016 指针为什么要区分类型: 在同一种编译器环境下,一个指针变量所占用的内存空间是固定的.比如,在16位编译器环境 下,任何一个指针变量都只占用8个字节,并不会随所指向变量的类型而改变. 虽然所有 ...

  2. C++11新特性之智能指针

    智能指针的特性 智能指针可以自动释放不再使用的内存,能够有效的防止内存泄漏. 智能指针是一个对象,普通指针是一个变量. 智能指针是对普通指针的封装,其安全性要高于直接使用普通指针. 智能指针的分类 共 ...

  3. C++ 智能指针(unique_ptr / shared_ptr)代码实现

    文章目录 unique_ptr 智能指针的实现 shared_ptr 智能指针的实现 指针类型转换 unique_ptr 智能指针的实现 一个对象只能被单个unique_ptr 所拥有. #inclu ...

  4. c++ STL 常用容器元素类型相关限制 指针 引用

    c++ 的 STL 中主要有 vector , list, map, set  , multimap,multiset 这些容器完全支持使用内置类型和指针(指针注意内存泄露问题). 就是说乱用智能指针 ...

  5. C++知识点43——解引用运算符和箭头运算符的重载及智能指针类的实现

    一.概念. 在自定义行为类似指针的类时,需要重载*和->.C++中的智能指针就重载了这两个运算符.->必须是成员函数,*也应该是成员函数.与内置类型保持一致,这两个函数通常都是const的 ...

  6. 表变量是什么_为什么要使用二级指针?

    笔者能力有限,如果文中出现错误的地方,欢迎各位朋友给我指出来,我将不胜感激,谢谢~ 概念 提到指针,我们都知道指针是用来存储一个变量的地址.所以,当我们定义了一个指向指针的指针的时候(pointer ...

  7. 数组名与数组指针的关系

    一个奇怪的现象 #include<stdio.h>int main(void) {int arr[5] = { 1,2,3,4,5 };int(*p)[5] = &arr;prin ...

  8. 数组名与指向数组的指针之间的联系与区别【数据结构】

    我们遇到一个非常棘手的问题,这个问题就是,对于一堆数据来说,我们进行存储,放到一个指定的仓库当中,先前我们使用数组加加标的形式进行访问仓库当中的元素位置,但是呢,现在我们使用的是一个指针结构,指针指向 ...

  9. 19.C++-(=)赋值操作符、初步编写智能指针

    (=)赋值操作符 编译器为每个类默认重载了(=)赋值操作符 默认的(=)赋值操作符仅完成浅拷贝 默认的赋值操作符和默认的拷贝构造函数有相同的存在意义 (=)赋值操作符注意事项 首先要判断两个操作数是否 ...

最新文章

  1. 【Qt】ubuntu14.04.5 qt5.6中使用opencv3.4报错:Using GTK+ 2.x and GTK+ 3 in the same process is not supported
  2. 成果展示 | 清华大学大数据研究中心——医工结合科研创新支持计划
  3. 没有统计学基础可以学python-机器学习和Python怎样快速掌握?你一定需要这27张清单...
  4. 使用CSS3各个属性实现小人的动画
  5. 缓存与库先删哪个(转自网络,侵删)
  6. 毕业了,在Python中使用 OpenCV 和K-Means 聚类对毕业照进行图像分割
  7. Java并发编程的基础-线程的终止原理
  8. mysql占用内存吗_mysql占多少内存
  9. 罗永浩:还会给你们做手机 只是需要时间
  10. 爬楼梯 · Climbing Stairs
  11. [转载] 比较器(Comparable和Comparator)、自然排序、定制排序
  12. Python自动下载最新的chromedriver
  13. Atitit。Time base gc 垃圾 资源 收集的原理与设计
  14. 基于python中jieba包的详细使用介绍
  15. 使用EXCEL连接PGSQL
  16. 戴尔win10计算机打不开,戴尔Win10系统摄像头打不开怎么办?
  17. C++报错:引发了未经处理的异常:写入访问权限冲突, p 是 0xCCCCCCCC
  18. 2022-2028全球与中国数据虚拟化解决方案市场现状及未来发展趋势
  19. 普通话计算机等级用英语怎么说,普通话用英语怎么说
  20. 音视频解封装--解封装分离音频AAC文件

热门文章

  1. 写二叉树程序时为什么总是报运行时错误_二叉树:一入递归深似海,从此offer是路人...
  2. 【CentOS 7笔记5】,主机互相登陆#
  3. Idea加快开发的10个技巧
  4. Backblaze发布2016年2季度硬盘可靠性报告
  5. your port 80 is actually used by server IIS解决办法
  6. 项目分布式部署那些事(1):ONS消息队列、基于Redis的Session共享,开源共享
  7. U盘PE安装windows7 方法
  8. 专业上需要加强的地方
  9. 易到遭******以数据要挟索要巨额比特币
  10. 读取properties资源文件中的参数