Re: [問題]初學指標/函數指標的問題

看板C_and_CPP作者 (Lipraxde)時間8年前 (2017/08/14 23:46), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.215.166 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1502725587.A.B83.html

08/15 09:39, , 1F
謝謝L大的解釋,這樣Func回傳單一Int,靠外面的loop變成
08/15 09:39, 1F

08/15 09:40, , 2F
矩陣,這樣就不用回傳矩陣了
08/15 09:40, 2F
文章代碼(AID): #1PaSNJk3 (C_and_CPP)
文章代碼(AID): #1PaSNJk3 (C_and_CPP)