Re: [問題] 如何讓函數回傳二維陣列?

看板C_and_CPP作者 (拋磚引玉)時間15年前 (2011/01/02 18:06), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串3/3 (看更多)
其實我覺得不用特別想得很複雜阿 (不用C++ Ref) 像是平常我有一個整數,希望傳進參數,又有in/out的效果 那就用個指標去接他,改 dereference 的內容就好啦 void foo(int *p) { // do something on *p } 所以二維陣列也同理 void foo(int (*p)[dim_x][dim_y]) { // do something on *p } 這樣就好啦 @_@ 不過我個人也是建議包成 struct 來用方便省事 ※ 引述《flydragon198 (知音難尋)》之銘言: : 其實你如果只是要處理過後的資料,不需要回傳二維陣列 : int data_value[10][10]; : int process (int[][]& datavalue); //沒compiler不知道這樣宣告是不是對的 : 將你要處理的二維陣列以參數reference傳入,處理完後return true;這樣就好了 : ※ 引述《atomuu (小原子)》之銘言: : : 開發平台(Platform): (Ex: VC++, Gcc, Linux, ...) : : Linux : : 額外使用到的庫(Library Used) (Ex: OpenGL, ...) : : no : : 問題(Question): : : 我在想到底要如何宣告回傳二維陣列的函數 : : int[][] ABC(int X[][10]) : : int X[][10]是傳入二維陣列的方法 : : 好像問題出在int[][] : : 請問宣告回傳二維陣列的函數不是int[][]這樣宣告嘛? : : 查了幾本書都沒有說這樣要怎麼寫= = : : 餵入的資料(Input): : : 以上的宣告方式 : : 預期的正確結果(Expected Output): : : 應該要可以編譯 : : 錯誤結果(Wrong Output): : : 編譯錯誤 : : error: array type has incomplete element type : : 程式碼(Code): (請善用置底文標色功能) : : 上面的程式碼 : : 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.169.179

01/02 18:59, , 1F
call by point XD" ...
01/02 18:59, 1F

01/02 21:02, , 2F
通常陣列傳遞都用這種方式。引數放陣列名稱,就是把陣列
01/02 21:02, 2F

01/02 21:03, , 3F
的位置(也就是第一個位置)傳進去了,所以在函式做更改,
01/02 21:03, 3F

01/02 21:03, , 4F
就行了!!
01/02 21:03, 4F

01/02 21:31, , 5F
喔對 我忘記本來就是用指標接了
01/02 21:31, 5F

01/02 21:34, , 6F
直接用 int (*p)[dim_y] 就可以了 太久沒寫搞複雜了 Orz
01/02 21:34, 6F
文章代碼(AID): #1D84uccD (C_and_CPP)
文章代碼(AID): #1D84uccD (C_and_CPP)