→ stupid0319:display(int** x); 11/12 20:43
推 legnaleurc:二維陣列不能轉換為 ** 吧 11/12 21:06
推 wfgh:定義:xxx display(int [][3]) 11/12 21:24
→ wfgh:呼叫:display(x); 11/12 21:24
→ vm6jp6rmp4:那這樣不就寫死了,行只能傳入三 11/12 21:25
→ prismwu:簡單一點就是display(int *x,int r) 11/12 21:25
→ prismwu:把r傳入每排的數量(我猜你每排的數量會一樣) 11/12 21:26
→ james732:我會把二維 cast 成一維,像 display((int *)x, 2, 3)); 11/12 21:32
→ vm6jp6rmp4:那如果我要在display內顯示x所有值該怎寫呢 11/12 21:32
→ james732:如果是C++的話就可以用template XD 11/12 21:39
→ vm6jp6rmp4:想請問一下james大,傳入為什麼要用(int*)x呢? 11/12 21:46
→ james732:你把 (int *) 拿掉的話應該會編譯錯誤 試試看 11/12 21:47
→ vm6jp6rmp4:我試過了,只是不知道為什麼要用(int*)x,想了解觀念! 11/12 21:48
→ james732:把整個二維陣列當作是一塊扁平的一維陣列 11/12 21:49
→ vm6jp6rmp4:那為什麼不能像一維陣列一樣丟x呢? 11/12 21:52
→ akasan:請想像一下一維陣列如何算記憶體位址 二維陣列又怎麼算的? 11/12 22:10
→ prismwu:因為他本來不是一維的(c認定上) 如果你一開始自己用1維存 11/12 22:11
→ prismwu:然後用x[i*wide+j]這樣去控制 就可以不用轉型 11/12 22:11
→ james732:把一維當作二維用 (需要動態的時候我會這麼寫) 11/12 22:16
→ wawi:一樓...請看置底文第12誡~~ 11/12 22:23
→ vm6jp6rmp4:那如果x變成三維的呢?是用(int**)x? 11/12 22:29
推 nowar100:我覺得我置底寫得很清楚啊,還是說我自我感覺太良好 XD 11/12 22:32
→ james732:會覺得三維使用(int **)的話,代表你還沒懂 XD 11/12 22:47
→ stupid0319:以前都沒發現,因為都是用LPARAM傳陣列 11/12 22:53
→ stupid0319:或者是LPVOID附帶資訊傳過法 11/12 22:54
→ stupid0319:想不到傳個陣列這麼複雜,又學到一課了 11/12 22:56
→ vm6jp6rmp4:使用(int*)是要將x轉成指標嗎? 11/12 23:00
推 wawi:三維也一樣...函式定義參數用指標去接 呼叫時傳入x[0][0] 11/12 23:02
推 stupid2:不管幾維不是都跟1維一樣不是嗎(話說原PO的問題我直覺是 * 11/13 00:13
推 loveme00835:C 語言沒有「傳陣列」這種事, 全部都是指標 11/13 13:17
推 VictorTom:把array用struct包起來然後傳struct instance算不算XD 11/13 15:39
推 purpose:算啊 11/13 15:43
→ stupid0319:把array用class包起來然後傳class instance也算不算 11/13 15:44
推 VictorTom:樓上的, 不算喔, C語言沒有class....(光速逃XD) 11/13 15:48
→ stupid0319:這麼說的話用union包起來也是可以的吧 11/13 15:50