[問題] C裡面call by value 的保存有什麼好處

看板C_and_CPP (C/C++)作者 (水表)時間10年前 (2016/01/01 10:55), 編輯推噓7(7010)
留言17則, 11人參與, 最新討論串2/2 (看更多)
最近寫C pointer 想到既然pointer可以讓程式跑更快 那當初為什麼不廢除原來的call by value 直接用pointer 的方式代替原來的運算就好了 保留call by value 的目的是什麼 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.6.148 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1451616900.A.4C2.html

01/01 11:23, , 1F
你知道傳指標也是 call by value 嗎?
01/01 11:23, 1F

01/01 12:48, , 2F
有時就是要copy兩份才不傷身體阿 像你這篇就copy兩份
01/01 12:48, 2F

01/01 13:27, , 3F
call by address只能對變數吧? 數值又不能取位址
01/01 13:27, 3F

01/01 13:52, , 4F
2F幽默www 這篇要指向上一篇www
01/01 13:52, 4F

01/01 14:21, , 5F
C語言只有 call by value
01/01 14:21, 5F

01/01 14:49, , 6F
這樣就能當作是local variable
01/01 14:49, 6F

01/01 15:02, , 7F
還有當你傳多個int *卻只有讀沒有寫的需求時比int還慢
01/01 15:02, 7F

01/01 15:03, , 8F
因為會再多一倍存取記憶體的時間,脫褲子放屁
01/01 15:03, 8F

01/01 15:05, , 9F
(此處以當int *不是指向array of int時)
01/01 15:05, 9F

01/01 22:12, , 10F
操作pointer是間接的
01/01 22:12, 10F

01/02 17:20, , 11F
Pointer 就是一個4(8) bytes的value
01/02 17:20, 11F

01/02 22:38, , 12F
C從頭到尾都只有一種東西叫做Call by Value
01/02 22:38, 12F

01/02 22:39, , 13F
只是你可以選擇傳入的是指標還是數值而已
01/02 22:39, 13F

01/02 22:39, , 14F
所以根本沒有什麼「保留call by value的目的」這回事
01/02 22:39, 14F

01/02 23:12, , 15F
事實上要知道call stack ret等還有暫存器等程式運作
01/02 23:12, 15F

01/02 23:12, , 16F
才會理解為什麼會有pointer
01/02 23:12, 16F

01/04 14:24, , 17F
嚇我一跳哪時ptt可以按上下鍵來切換推文..
01/04 14:24, 17F
文章代碼(AID): #1MXUg4J2 (C_and_CPP)
文章代碼(AID): #1MXUg4J2 (C_and_CPP)