[問題] 關於二維陣列

看板C_and_CPP (C/C++)作者 (懂得放手..才是王道)時間8年前 (2016/12/04 14:37), 編輯推噓10(10023)
留言33則, 7人參與, 最新討論串3/3 (看更多)
請教一個關於陣列的問題, 說明如下, 我有兩個二維陣列 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沒有問題, 但執行時會出現誤會訊息.. 請問是否哪個地方用錯了? 謝謝.. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.217.175 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1480833421.A.4D1.html

12/04 14:45, , 1F
用錯了,直接arr1,arr2來存取就好了XD,下面通通刪掉
12/04 14:45, 1F

12/04 14:58, , 2F
要三個星星
12/04 14:58, 2F

12/04 14:59, , 3F
你把pArr改三個星星
12/04 14:59, 3F

12/04 15:02, , 4F
呃然後前面也要改
12/04 15:02, 4F

12/04 15:07, , 5F
用雙重指標來存取二維陣列?別浪費生命了......
12/04 15:07, 5F

12/04 15:08, , 6F
陣列跟指標還是有所不同的,不能這樣搞
12/04 15:08, 6F

12/04 15:14, , 7F
不能?
12/04 15:14, 7F

12/04 15:15, , 8F
13 戒之 12 不管幾維陣列都是一個 star
12/04 15:15, 8F

12/04 15:16, , 9F
c/c++ 的陣列和 Java 的不一樣
12/04 15:16, 9F

12/04 15:18, , 10F
喔喔我錯了Qq
12/04 15:18, 10F

12/04 15:20, , 11F
我只是在想要是你是在用pointer 模擬的話做的到 但就
12/04 15:20, 11F

12/04 15:20, , 12F
不是陣列
12/04 15:20, 12F

12/04 15:37, , 13F
謝謝大家的回應, 因為實際應用上2維陣列還蠻多的,
12/04 15:37, 13F

12/04 15:38, , 14F
又需要透過index去調用, 所以須要用一個陣列來處理,
12/04 15:38, 14F

12/04 15:39, , 15F
請問一下有其它的方法可以做到類似的功能嗎?
12/04 15:39, 15F

12/04 16:06, , 16F
痾 你是想兩個綁在一起嗎 那試試看struct
12/04 16:06, 16F

12/04 16:13, , 17F
T a[N], b[N];
12/04 16:13, 17F

12/04 16:13, , 18F
T* p[2] = {a,b};
12/04 16:13, 18F

12/04 16:13, , 19F
你是想把兩個陣列當作一個用,像這樣?
12/04 16:13, 19F

12/04 16:16, , 20F
預期做法是"pArr[n]"這個陣列存的是2維陣列的位址..
12/04 16:16, 20F

12/04 16:19, , 21F
Var從pArr[n]取出來之後, 可以像Var[1][2]來使用二維陣列
12/04 16:19, 21F

12/04 16:30, , 22F
可以做到,但是沒有你想像的那麼方便 建議先學資料結構
12/04 16:30, 22F

12/04 16:30, , 23F
T a[M][N], b[M][N];
12/04 16:30, 23F

12/04 16:30, , 24F
T* p[M] = {a[0],..,a[M-1]};
12/04 16:30, 24F

12/04 16:30, , 25F
T* q[M] = {b[0],..,b[M-1]};
12/04 16:30, 25F

12/04 16:30, , 26F
T** r[2] = {p,q};
12/04 16:30, 26F

12/04 16:35, , 27F
明明就直接用arr1,arr2存取就好了,為什麼要化簡為繁?
12/04 16:35, 27F

12/04 16:41, , 28F
樓上 我是覺得原 Po 如果藉由這個例子能弄清楚陣列和指
12/04 16:41, 28F

12/04 16:41, , 29F
標的關係其實是滿值得的啦
12/04 16:41, 29F

12/04 16:45, , 30F
好吧,多寫一些自虐的CODE真的會變強嗎XD
12/04 16:45, 30F

12/04 18:41, , 31F
會阿 心理會變強(笑)
12/04 18:41, 31F

12/04 19:00, , 32F
12/04 19:00, 32F

12/04 19:00, , 33F
你是想要這樣吧~不過我覺得優化一下會比較好~~
12/04 19:00, 33F
文章代碼(AID): #1OGxcDJH (C_and_CPP)
文章代碼(AID): #1OGxcDJH (C_and_CPP)