看板 C_and_CPP 關於我們 聯絡資訊
小弟是從不用這東西,個人以為,這東西會讓 函數的使用者忘了變量的值是會被改變的。 組語不是都在call by value嗎? 給定位置,然後去把該位置的質copy到寄存器上 call by reference 是怎樣實作的呢? 是編譯器把代碼轉成by value,再編為匯編語言麼? 還是就直接開塊內存,把該by reference的變量, 寫死在該位置上面,要調用時就直接叫cpu copy該位置的值到 寄存器上面? 貌似第一種可以性比較高。 還請很懂匯編語言高手釋疑,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.115.143.194
hilorrk:變量 匯編 內存 寄存器 11/03 02:05
yauhh:可能的解釋: http://0rz.tw/vP408 http://0rz.tw/hXEDN 11/03 02:37
yoco315:其實你可以讓編譯器編出彙編語言看看, 11/03 02:46
yoco315:就會發現 reference 實值上也是用指針來實現的 11/03 02:46
purpose:編譯器把他當指標,只不過遇到x.val自動視為x->val,遇到 11/03 02:51
purpose:int n=x; 編譯器也自動視為 int n=*x; 11/03 02:52
loveme00835:TAIWAN TAIPEI @_@ 11/03 06:48
loveme00835:原本的 C++ 程式碼: http://codepad.org/zrRH4OQF 11/03 08:13
loveme00835:編出來的彙編碼:http://paste.plurk.com/show/324368/ 11/03 08:14
loveme00835:使用 gcc 4.4, 樓主可以自己觀察看看 @_@ 11/03 08:15
james732:我只是單純的把它當作是穿上糖衣的指標....XDDD 11/03 08:46
yauhh:那你覺得剝去糖衣的作法應該是什麼? 11/03 15:05
tinlans:用指標實現 (完) 11/03 18:22
softwind:As constant pointer, 收工 11/03 22:35
yauhh:用constant pointer的意思是,要知道哪些呼叫端變數被ref. 11/04 07:42
yauhh:把那些做成固定位址的東西嗎? 11/04 07:43
loveme00835:s 大的意思是reference初始後, 不能改參考到其他物件 11/04 14:04