作者tropical72 (藍影)
看板C_and_CPP
標題Re: [問題] 有沒有方法讓一個function變成pointer?
時間Thu Mar 8 21:50:27 2012
※ 引述《Propagator (傳來傳去)》之銘言:
恕刪。問題蠻有意思,我認為視情況,不一定有解答,
但普遍性的回答是:
double A[] ---> (一連串處理) ----> double B[]
如果不用 double B[], 可以接受 double A[] 會被修改,
那「可能」有解答;如果不能接受 double A[] 會被修改,
那有解法的機率不大。
----
翻譯原 po 原意做參考。
引述 期末調分數 的問題,調分數分二個步驟 (是亂寫的):
(1) 先算班上平均,得到 double ave;
(2) 每個人的成績扣掉 ave ,絕對值乘以 1.2 再加 ave,存到 double adj[]。
示意如下。
double average(double* score, size_t n);
void adjust_score(double* des_score, size_t n, double ave);
int main(){
const size_t n=20;
double score[n], adj_score[n];
double ave = average(score, n);
adjust_socre(adj_score, n, ave);
}
原 po 提到一點是他想解決的問題
因為那個N很大 再多宣告一個B 記憶體會不夠 但Func又不能硬拆
因為有太多地方需要用到Func了...如果把它拆出來
整個版面會超級大超級醜...非常難debug
想把 adj_score 整個拿掉,省下記憶體,以這例子而言的話只需這麼做
ave = average(score, n);
adjust_score(score, n, ave);
// don't write it one line : adjust_score(score, n, average(score, n));
和函式指標拉不上太大關係,關鍵是在於,
若能接受 運算前的array 在經運算後原始資料流失的話,
這麼做無妨;反之,必須拿一份新的記憶體存運算結果。
--
我知道 ~ 但別說出來 ,
說出來讓人感到特別難過...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.165.40
推 LPH66:我覺得原 PO 想做的比較像是「想要計算調分後的平均」這種事 03/08 21:56
→ LPH66:然後他想要傳原始分數和調分公式進去這樣 03/08 21:56
→ tropical72:我似乎看懂了Orz..這問題挺複雜的,我會做額外interface 03/08 22:17
→ shadow0326:感覺有點像是for_each? C的話可以用macro兜出來 03/08 23:01
推 henry666666:functor? 03/10 17:55