2010-10-21 205 views
1

不知道是否有人能为我清除以下内容。如果我将指针指向另一个指针会发生什么? E.g指向另一个指针的指针 - 会发生什么?

Pointer 1 = Object 
Pointer 2 = Pointer 1 

如果我再改指针1:

Pointer 1 = Object 2 

哪里指针2现在都指向?

感谢,

马丁

+0

推荐阅读:Peter Hosey的[你需要知道的关于C语言中指针的所有内容](http://boredzo.org/pointers/)。 – 2010-10-21 11:48:56

回答

1
Pointer 1 = Object

指针1包含对象的地址。

Pointer 2 = Pointer 1

您指针1的值赋给指针2指针1的值是对象的地址。所以指针2也包含Object的地址。

Pointer 1 = Object 2

指针1变化,但指针2的值不变。所以指针2仍然包含Object的地址。

东西是指针包含地址,即指针变量的值是内存的地址。如果将其分配给另一个指针,则该地址将像普通整数一样分配。但是,指向一个指针(即指向指针或**的指针)与将指针指派给另一个不同。你可以谷歌“C指针教程”(以及Obj-C是C的超集,指针来自C部分,没有什么特别的Obj-C),以便更好地理解。我会为初学者推荐this书。

+0

我想知道为什么这是downvoted。评论会帮助我改善自己。 – taskinoor 2011-01-23 07:48:55

0

基本上,大声说出你的代码在做什么。指针1指向对象1的地址。指针2指向指针1的地址。更改指针1的值不会更改指针1的地址。即使释放指针1的内容也不行。
如果您将对象视为封闭框并将指针视为篮子,可能会有所帮助。您将一个盒子放入篮子1中,然后将篮子1放入篮子2中。如果您将篮子1从盒子1上取下并更换为另一盒子,篮子2是否突然包含其他东西?

相关问题