[問題] 關於二維陣列

作者: MaxHaru (懂得放手..才是王道)   2016-12-04 14:36:58
請教一個關於陣列的問題, 說明如下,
我有兩個二維陣列
unsigned char arr1[2][2] = {{1,2},{3,4}};
unsigned char arr2[2][2] = {{5,6},{7,8}};
我想用另一個陣列將兩個二陣列的位置存起來, 該如何宣告變數型態
unsigned char**pArr[2] = {arr1, arr2}; //不確定這樣宣告對不對..
我想再用一個變數將pArr中的二維陣列位址取出來並當二維陣列一樣使用
unsigned char**Var; //不確定是否正確
Var = pArr[0]; //不確定是否正確
printf("%d", Var[0][0]);
以上, 我有試著在Ideone上跑跑看( http://ideone.com/jUPUp9 )
compile沒有問題, 但執行時會出現誤會訊息..
請問是否哪個地方用錯了?
謝謝..
作者: chuegou (chuegou)   2016-12-04 18:41:00
會阿 心理會變強(笑)
作者: hunandy14 (Charlott.HonG)   2016-12-04 19:00:00
https://goo.gl/O5cq5r你是想要這樣吧~不過我覺得優化一下會比較好~~
作者: stupid0319 (徵女友)   2016-12-04 16:45:00
好吧,多寫一些自虐的CODE真的會變強嗎XD
作者: CoNsTaR ((const *))   2016-12-04 16:41:00
樓上 我是覺得原 Po 如果藉由這個例子能弄清楚陣列和指標的關係其實是滿值得的啦
作者: stupid0319 (徵女友)   2016-12-04 16:35:00
明明就直接用arr1,arr2存取就好了,為什麼要化簡為繁?
作者: CoNsTaR ((const *))   2016-12-04 16:30:00
可以做到,但是沒有你想像的那麼方便 建議先學資料結構T a[M][N], b[M][N];T* p[M] = {a[0],..,a[M-1]};T* q[M] = {b[0],..,b[M-1]};T** r[2] = {p,q};
作者: MaxHaru (懂得放手..才是王道)   2016-12-04 16:16:00
預期做法是"pArr[n]"這個陣列存的是2維陣列的位址..Var從pArr[n]取出來之後, 可以像Var[1][2]來使用二維陣列
作者: CoNsTaR ((const *))   2016-12-04 16:13:00
T a[N], b[N];T* p[2] = {a,b};你是想把兩個陣列當作一個用,像這樣?
作者: DrizzleX   2016-12-04 16:06:00
痾 你是想兩個綁在一起嗎 那試試看struct
作者: MaxHaru (懂得放手..才是王道)   2016-12-04 15:37:00
謝謝大家的回應, 因為實際應用上2維陣列還蠻多的,又需要透過index去調用, 所以須要用一個陣列來處理,請問一下有其它的方法可以做到類似的功能嗎?
作者: steve1012 (steve)   2016-12-04 15:18:00
喔喔我錯了Qq我只是在想要是你是在用pointer 模擬的話做的到 但就不是陣列
作者: CoNsTaR ((const *))   2016-12-04 15:15:00
13 戒之 12 不管幾維陣列都是一個 starc/c++ 的陣列和 Java 的不一樣
作者: stupid0319 (徵女友)   2016-12-04 15:07:00
用雙重指標來存取二維陣列?別浪費生命了......陣列跟指標還是有所不同的,不能這樣搞
作者: steve1012 (steve)   2016-12-04 15:14:00
不能?
作者: steve1012 (steve)   2016-12-04 14:58:00
要三個星星你把pArr改三個星星呃然後前面也要改
作者: stupid0319 (徵女友)   2016-12-04 14:45:00
用錯了,直接arr1,arr2來存取就好了XD,下面通通刪掉

Links booklink

Contact Us: admin [ a t ] ucptt.com