2012-04-05 73 views
1

這兩個賦值是否等價,即執行完全相同的事情?取消引用一個指針-vs-&-operator

*pointer = object 

pointer = &object 

,其中指針是指向「對象實例」的指針。

抑或這只是意義的基本類型。

+3

他們絕對*非常*不同。你必須閱讀更多(和實驗)關於指針。 – 2012-04-05 11:31:48

+0

如果你拿出一支鉛筆和一些紙張,然後*​​畫出使用方框和箭頭髮生的事情,那麼這些東西就容易理解了。海事組織,鉛筆和紙是解決大多數指針相關問題的最佳工具。 – molbdnilo 2012-04-05 13:29:40

+0

是的,你是對的。我應該在發帖之前考慮過。感謝您的提示,但! – 2012-04-05 21:48:01

回答

5

絕對不是。

*pointer = object 

更改指針指向的內存。

pointer = &object 

更改指針。

pointer ----> object1 
&object ----> object 

在第一種情況下,這變爲:

pointer ----> object 
&object ----> object 

在第二種情況:

    ----> object1 //could turn into a memory leak 
&object, pointer ----> object 
11

不,這些是不一樣的。

pointer = &object sets pointer因此它指向object

*pointer = objectpointer所指的東西的值設置爲等於object的值。

0

NO。

您的第一表達分配對象到指針的值。

假設你的指針變量指向0x1234的。第一次分配後,地址0x1234將包含值「object」。

而第二指派將使得指針指向對象的地址。

如果你改變的第一個任務指針後的值對象不會注意到什麼。

,其中作爲第二次分配,如果你改變對象的值,就可以打通

*pointer. 
2

沒有更新的價值,這是不等價的。第一個使指針的目標值等於右側的對象。第二個改變指針本身,使它指向右側的對象。

換句話說,在第一個之後,內存中有兩個對象的值等於object的值。在第二次之後,只有一個具有該值的對象,另外還有一個指向該對象的指針。