Re: [問題] 有沒有方法讓一個function變成pointer?

看板C_and_CPP (C/C++)作者 (藍影)時間14年前 (2012/03/08 21:50), 編輯推噓2(203)
留言5則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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

03/08 21:56, , 1F
我覺得原 PO 想做的比較像是「想要計算調分後的平均」這種事
03/08 21:56, 1F

03/08 21:56, , 2F
然後他想要傳原始分數和調分公式進去這樣
03/08 21:56, 2F

03/08 22:17, , 3F
我似乎看懂了Orz..這問題挺複雜的,我會做額外interface
03/08 22:17, 3F

03/08 23:01, , 4F
感覺有點像是for_each? C的話可以用macro兜出來
03/08 23:01, 4F

03/10 17:55, , 5F
functor?
03/10 17:55, 5F
文章代碼(AID): #1FMBae3x (C_and_CPP)
文章代碼(AID): #1FMBae3x (C_and_CPP)