看板 C_and_CPP 關於我們 聯絡資訊
我只能根據我知識所及, 稍微說明一下 解決辦法仍有待板上其他人來幫忙了 : const unsigned int uArray04A[23][21] = { ... }; : const unsigned int uArray04B[23][21] = { ... }; : const unsigned int uArray04C[23][21] = { ... }; : const unsigned int uArray04D[23][21] = { ... }; : const unsigned int uArray05A[25][23] = { ... }; : const unsigned int uArray05B[25][23] = { ... }; : const unsigned int uArray05C[25][23] = { ... }; : const unsigned int uArray05D[25][23] = { ... }; : 矩陣大小是不固定的, 不過都是二維 : 但是想要用索引的方式 : Ptr[index] = .... : 藉由 Ptr[index] index=0; index++; 的方式 : 分別將每個 uArray[][]的 address取出 uArray04X(X for A, B, C, D)的型態是相同的 但uArray04X與uArray05X的型態是不同的 所以uArray04X與uArray05X沒辦法裝在同一個陣列Ptr[]中 如果想維持類似的做法, 可能要去STL找個適合的容器 : 然後再將每個 uArray[][] 的內容 : copy到一個共用的全域矩陣 g_uGobalArray[i][j]; : 實際的對每個矩陣元素的存取再由 g_uGobalArray[i][j]來存取 我猜想你應該不想把uArray中的內容一個一個抓出來放入g_uGobalArray[i][j] 而是想用一個指標g_uGobalArray可以指向不同的uArray 不過型態不同的問題一樣還在 所以g_uGobalArray無法兼顧能指向uArray04X又能指向uArray05X 除非有辦法做一些型別轉換的動作, 但我不確定能不能轉 大致上是這樣 我能想到的辦法很普通, 會包含一長串的switch case去判斷型別之類的 不怎麼漂亮, 我也不太喜歡這種作法, 應該有更好的方法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.209.20.225
Fenikso:最簡單的方法是把所有的uArrayXXX變一樣大XD 08/11 11:15
ledia:存的時候 cast 成 char * 存, 但也把 size 存起來 08/11 11:34
ledia:用的時候依 size 再 cast 回原本的型別 & copy 到 global 08/11 11:35
ULISS:謝謝S大的解說,因為後來還是需要一個2D Array來作處理,所以 08/11 11:41
ULISS:把內容值Copy到g_uGonalArray是可以的,反正之後需要處理2D 08/11 11:42
ULISS:Array, 所以現在只好另外想辦法,把每個copy寫成function,再 08/11 11:43
ULISS:作成 function pointer array, 再依需求執行 function了! 08/11 11:43