看板 C_and_CPP 關於我們 聯絡資訊
程式碼如下 int a=1,b=2,c=3,product; product=a*b; sub(&product,&c); void sub(int *x,int *y) { ...... } 現在我想改成,不需要預設一個product 而直接把a*b用call by address的方式丟進副函式 (不知道這邊是不是真的是call by address,可是C不是沒有call by ref嗎? 好像要到哪個版本才有ref的不是?) 舉例 sub(&(a*b),&c); 不過compile不給過,我想是不能這樣丟 不知道有沒有方法可以不用再新declare變數去存a*b以後的結果呢? -- Johannes Krauser II 強暴!強暴!強暴!強暴!強暴!強暴! GO TO D.M.C ◥◣ ◥◣ 強暴!強暴!強暴!強暴!強暴! ▄▂▁▂▃▅▆▅ ▃▄ ∵ ∵ ▃▄▃ シ ▋▊▍ φjeans1020 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.191.82
legendmtg:沒有變數存為什麼要by address? 你不需要結果傳value 04/13 03:55
legendmtg:就好了啊.... 04/13 03:55
copy也是要耗時間的... 所以想試試看能不能不要做assign的動作就完成傳入 ※ 編輯: SATSUGAI 來自: 61.227.191.82 (04/13 06:13)
littleshan:你傳 pointer 也要 copy pointer 呀 04/13 07:56
littleshan:而且函式內多一步去 dereference 就更慢了 04/13 07:56
littleshan:如果你只傳遞資料,對內建型別來說直接傳值最有效率 04/13 07:57
VictorTom:copy一個pointer跟copy一個int的時間應該差不了多少吧?? 04/13 10:25
bleed1979:十誡之三? 04/13 10:35
LiloHuang:其實call by address算是一種call by value 04/13 11:41
VictorTom:樓上 GJ :) 04/13 12:26
snowlike:...sub(a*b, c); ...void sub(int x, int y){...} 04/13 16:23