2010-10-21 142 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是否突然包含其他東西?