【问题标题】:Pointing a pointer to another pointer - what happens?将一个指针指向另一个指针 - 会发生什么?
【发布时间】:2010-10-21 10:59:46
【问题描述】:
想知道是否有人可以为我清除以下内容。如果我将一个指针指向另一个指针会发生什么?例如
Pointer 1 = Object
Pointer 2 = Pointer 1
如果我改变指针 1 会怎样:
Pointer 1 = Object 2
指针 2 现在指向哪里?
谢谢,
马丁
【问题讨论】:
标签:
iphone
objective-c
pointers
【解决方案1】:
指针 1 = 对象
指针 1 包含 Object 的地址。
指针 2 = 指针 1
您将指针 1 的值分配给指针 2。指针 1 的值是对象的地址。所以指针2也包含了Object的地址。
指针 1 = 对象 2
指针 1 改变,但指针 2 的值不变。所以指针 2 仍然包含 Object 的地址。
事物是一个包含地址的指针,即指针变量的值是一个内存地址。如果你把它分配给另一个指针,那么这个地址就像普通整数一样被分配。但是,指向一个指针(即指向指针或**的指针)不同于将一个指针分配给另一个指针。
你可以谷歌“C 指针教程”(嗯,Obj-C 是 C 的超集,指针来自 C 部分。在 Obj-C 中没什么特别的)以获得更好的理解。我会推荐this 专为初学者准备的书。
【解决方案2】:
基本上,大声说出您的代码在做什么。指针 1 指向对象 1 的地址。指针 2 指向指针 1 的地址。更改指针 1 的值不会更改指针 1 的地址。即使释放指针 1 的内容也不会。
如果您将对象视为封闭的盒子,将指针视为篮子,这可能会有所帮助。您将一个盒子放入篮子 1,然后将篮子 1 放入篮子 2。如果您从篮子 1 中取出盒子并换上另一个盒子,篮子 2 是否突然包含其他东西?