[問題] 函式傳遞二維陣列的問題

看板C_and_CPP作者 (不丹)時間12年前 (2011/10/13 12:20), 編輯推噓0(0012)
留言12則, 5人參與, 最新討論串1/1
void f( int n , int a[][n] ); 我宣告了一個函式需要傳遞一個二維陣列給此函式 編譯後他會告訴我 'n' was not declared in this scope 可是宣告成 void f( int n , int a[][] ); 是一定錯的 請問該用什麼方法傳遞二維陣列給一個函式呢? --

01/08 00:53,
加藤
01/08 00:53

01/08 00:54,
01/08 00:54

01/08 00:54,
我是在說青蜂俠
01/08 00:54

01/08 00:54,
樓上好糟糕
01/08 00:54

01/08 00:54,
我是說樓樓上
01/08 00:54
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.255.171.189

10/13 12:22, , 1F
我怎麼看有些人都適用第一種打法?
10/13 12:22, 1F

10/13 12:23, , 2F
置底文十三戒的第十二條看一下
10/13 12:23, 2F

10/13 12:25, , 3F
看了 可是為什麼第一種宣告方式是pointer to pointer?
10/13 12:25, 3F

10/13 12:26, , 4F
pointer to pointer就是 void f(int **a) 這樣寫
10/13 12:26, 4F

10/13 12:26, , 5F
這個寫法是不能用來傳遞二維陣列的
10/13 12:26, 5F

10/13 12:27, , 6F
void f( int n , int a[][填數字唷] );
10/13 12:27, 6F

10/13 12:29, , 7F
所以說多維陣列的傳遞是要訂出大小的, 可是如果大小不確定
10/13 12:29, 7F

10/13 12:30, , 8F
怎麼辦? 例如程式要給使用者輸入 m*n 然後函式處理此m*n
10/13 12:30, 8F

10/13 12:31, , 9F
的矩陣 這時矩陣的大小是不確定的
10/13 12:31, 9F

10/13 12:34, , 10F
如果你的是用malloc兩層配置的,那用 ** 傳遞就行了
10/13 12:34, 10F

10/13 12:44, , 11F
這就是我討厭C99 VLA的原因..堅持array是compile-time原則
10/13 12:44, 11F

10/13 12:47, , 12F
dynamic array用vector或malloc才不會搞混
10/13 12:47, 12F
文章代碼(AID): #1EbcSMlU (C_and_CPP)