[問題] 關於 3D array 的參數傳遞

看板C_and_CPP (C/C++)作者 ((((((((((()))))))))))時間16年前 (2009/04/20 18:25), 編輯推噓6(607)
留言13則, 3人參與, 最新討論串1/1
我剛剛寫了個程式(C 語言) 裡面有一個 function prototype 長這樣 void init(double** delta_arr); 在 main 中 這樣呼叫它 int main() { double delta_arr[5][50][6] ...... init(delta_arr[0]); } 結果 compile 出現 error message: test.c:91: warning: passing argument 4 of 'init' from incompatible pointer type 請問為什麼呢? (2D 和 1D的 array 我用類似的作法都沒問題耶…) 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.175.14

04/20 18:52, , 1F
void init(double (*delta_arr)[6]);試試看
04/20 18:52, 1F

04/20 20:05, , 2F
因為指標僅對應一個維度,2D亦可 QQ29::init(delta_arr);
04/20 20:05, 2F

04/20 20:37, , 3F
這樣不會過阿
04/20 20:37, 3F

04/20 20:58, , 4F
2D;原po所指的類似
04/20 20:58, 4F

04/20 21:12, , 5F
他不是要傳3D的嗎
04/20 21:12, 5F

04/20 21:27, , 6F
回答為什麼,他2D大概void init(*);init([]);這樣作的
04/20 21:27, 6F

04/20 21:31, , 7F
喔喔@@~我誤會了
04/20 21:31, 7F

04/20 21:34, , 8F
^^
04/20 21:34, 8F

04/20 23:55, , 9F
原波你2D是怎麼傳的?
04/20 23:55, 9F

04/23 00:50, , 10F
六樓正解 我這樣作 void init(double* arr)
04/23 00:50, 10F

04/23 00:51, , 11F
in main: double a[100]; init(a); // 這樣ok
04/23 00:51, 11F

04/23 01:01, , 12F
2D比照辦理 void init(double** arr)
04/23 01:01, 12F

04/23 01:02, , 13F
in main: double a[100][100]; init(a);
04/23 01:02, 13F
文章代碼(AID): #19x4sEug (C_and_CPP)
文章代碼(AID): #19x4sEug (C_and_CPP)