主业iOS/PHP,副业啥都玩,QQ:705719110,欢迎来撩!

双指针

iOS基础 随风 138℃ 0评论

在之前学习C语言的时候学过一点指针的基础知识,然后在学习OC的时候都是各种的 指针符号,有时候我们也会遇到 ** 这种的双指针符号,那表示的是什么呢?我们来看一下

这是我们遇到的其中一种情况,但是为什么这样写呢?我们来看一个例子

这里的运行结过如下

doublepoint 003

并没有得到我们想要的东西,p 依然是一个 null,那我们看一下使用双指针的效果

这次我们得到的结果是这样的

doublepoint 004

我们都知道指针是什么,指针存储对象地址的特殊类型,也是占有一定内存的,当我们把 p 传给 aPeople 的时候只是把 p 中存储的那个地址传给了 aPeople ,当创建对象的时候 就是 改变了 aPeople 这个指针中存储的地址,并没有改变 p 所存储的地址,所以此时 p 还是 nil 的,当我们使用了双指针,用 &p 传值 也就是把 p 的地址 传给了 *aPeople ,这个也叫引用传值,把指针的地址作为参数传递,当我们创建对象的时候,其实就是使用 p 指向的地址来 创建对象,这样我们就能给 p 指向的地址赋值了。请看图理解

doublepointer 001

doublepointer 002

代码请查看 http://git.oschina.net/zcb1603999/LearningiOS

转载请注明:怼码人生 » 双指针

喜欢 (0)
发表我的评论
取消评论

表情

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

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