看板 C_and_CPP 關於我們 聯絡資訊
請問一個觀念上的問題 什麼情況下會想要使用call by reference呢?是只有在引數想要跟著變的時候嗎? 那什麼情況下會想要使用call by pointer? 最近聽到一個說法:以call by reference取代call by pointer 理由好像是比較不會出錯 但是小弟百思不得其解,這樣做真的有比較好嗎? 速度有比較快嗎?實際寫code會比較容易嗎? 不知道大家對這個說法有什麼樣的意見? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.12.118
james732:語法較簡單(不必星號與箭號) 01/07 15:46
james732:ref不能是null,所以不用檢查 01/07 15:47
james732:一時能想到的是這樣,雖然我覺得第一點未必好事 01/07 15:49
tropical72:傳遞 first addr. of array 時,認為用 pointer 較佳。 01/07 15:51
DEATHX:是否以前有人提過C只有call by value?記得曾看人解釋過.. 01/07 15:52
tropical72:速度較快沒聽說過,不過之前版上有人拆asm似乎沒差多少. 01/07 15:52
DEATHX:#1AFaSAAX,原來是這篇。 01/07 15:54
x000032001:比較直觀 比較帥 XDD 01/07 16:11
WJAider:指標是惡魔,看不到惡魔就算是好事吧XD 01/07 16:19
tomnelson:樓上的,但是惡魔還是藏在細節裡,只是你看不到而已... 01/07 16:50
x000032001:眼不見為淨顆顆 01/07 17:11
littleshan:傳參照就是傳指標啊,compiler自動幫你加&和*而已 01/07 18:03
Arton0306:call by reference有個麻煩的地方,就是光看函式呼叫 01/07 21:19
Arton0306:會看不出引數到底有沒有被改到 還要跳到函式定義看一下 01/07 21:19
Arton0306:才能確定 而c語言如果要改的話引數會加取址 很好看出來 01/07 21:21
tropical72:reference 是必改的吧?不就是突變的 const pointer ? 01/07 21:39
diabloevagto:reference不會改到? 01/07 21:46
littleshan:pointer也一樣啊,如果你傳const pointer那內容不會動 01/07 21:55
littleshan:而你還是要跳到function宣告才知道是不是const pointer 01/07 21:56
PkmX:原則上我都盡量用reference,除非必要才用pointer... 01/08 09:01
cloudfly:可以參考Google c++ coding style裡有寫到原因,還蠻不錯 01/11 23:46