作者su31o4gj83 (哈哈哈哈哈哈哈哈哈哈哈)
看板C_and_CPP
標題Re: [問題] 請教關於指標的一個笨問題...
時間Tue Aug 11 11:04:00 2009
我只能根據我知識所及, 稍微說明一下
解決辦法仍有待板上其他人來幫忙了
: 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