※ 引述《idleryan (QQ)》之銘言:
: 我大概了解我想問的問題在哪裡了
: http://codepad.org/46eNrl23
: 在Code第35行,如果我的Func直接回傳一個矩陣,我不能直接以*Func(int)去讀回傳的矩陣
: 那請問我是否要再另開一個ptr去接Func的回傳矩陣再print out呢?
你的Func1從回傳int**改成回傳int了,你讀的時候就不能用原本的方法讀了。
不知道你有沒有學過typedef,一般在宣告指標、函數指標的時候我會喜歡用typedef,這
樣比較好理解。用法:
typedef int typFunc(int, int);
typFunc *Func1;
// 跟int (*Func1)(int, int);一樣意思
我想書本上題目的Func1、Func2想達成的目的是讓你傳入row、col兩個參數,在裡面透過
計算來得出矩陣的值,用code來寫的話:
// 原本用二維矩陣的寫法,讀取時用 M1[row][col]
int M1[2][3] = {{1,2,3},{4,5,6}};
// 用函數改寫,讀取時改用 Func1(row, col)
int Func1(int r, int c)
{
return 1*(c+r*COL+1);
}
原本用二維矩陣寫的話會占用記憶體空間,用函數改寫後平常是不占用記憶體的,當你有
需要的時候傳row、col進去,Func1臨時算出來給你,省了記憶體空間,不過在讀的時候就
要付出些計算量。
那Sum裡該做什麼事?Sum利用函數指標接收到Func1、Func2,在裡面呼叫Func1、Func2把要
相加的值計算出來。
最後附上我寫的解答,真的想不出來就參考看看吧,註解應該是打得蠻詳細的了。
http://codepad.org/qGBHBC61