最新消息:

两张图完全理解指针

PHP fafaxiaozhan 72浏览 0评论

都说不理解指针的程序员不是好程序员,这话放在java人群中,或是使用脚本语言的群体中,以及自认为php是世界上最好的语言的群体中,他们并不认同。但仔细想想,这话不无道理。java表面上没有指针的原因是jvm内部把“指针”影藏掉了。比如说:在java中,一个可能的堆的设计是将堆分为两个部分:引用池和对象池。一个对象的引用就是指向引用池的本地指针。而脚本语言和php就更不必多说。而且更重要的理解了指针更有利于以后高效编程。

我总结了下,尽可能的把指针这个玩意说的通俗易懂,看完此文后还不懂的可以私信,我将乐意为你解答。废话不多说:

理解指针之前,先理解下变量是个什么玩意,在计算机中是怎么存储的。

两张图完全理解指针

比如:

int i = 100;

这个 i 呢,计算机会把他翻译成一个地址(能看得见的内存条中的非常非常微小的电子元件的一个编号),而这个编号在一般情况下,是对应一个字节的(8个bit)位置的,即8个bit位置是一个地址编号。而我们的 int 整形变量是 4个字节,聪明的你一下子就知道严格说是有四个地址的吧,没错,只不过我们计算机默认是取四个中的第一个位置作为 这个变量 i 的地址。而这个 32bit 位置 存放的就是我们的 100这个值了。

很好理解吧,重点在于这个内容存放的是一个数据 100。ok,那么我们来看看指针,指针和普通变量的区别就是他的内容存放的是另一个变量的地址,用图来说就是。

两张图完全理解指针

这里,p1 被申明为指针(默认叫一级指针),说明它的内容是一个地址,谁的地址?整形变量i的地址,所以它是一级指针,指向整型变量i;

p2被申明为二级指针,说明他的内容是一个地址,谁的地址?一个一级指针变量p1的地址,所以它是二级指针。指向一级指针(也称指向一个变量的地址的地址)

转载请注明:PHP学习 » 两张图完全理解指针

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址