看板 C_and_CPP 關於我們 聯絡資訊
請教一個關於陣列的問題, 說明如下, 我有兩個二維陣列 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
stupid0319: 用錯了,直接arr1,arr2來存取就好了XD,下面通通刪掉 12/04 14:45
steve1012: 要三個星星 12/04 14:58
steve1012: 你把pArr改三個星星 12/04 14:59
steve1012: 呃然後前面也要改 12/04 15:02
stupid0319: 用雙重指標來存取二維陣列?別浪費生命了...... 12/04 15:07
stupid0319: 陣列跟指標還是有所不同的,不能這樣搞 12/04 15:08
steve1012: 不能? 12/04 15:14
CoNsTaR: 13 戒之 12 不管幾維陣列都是一個 star 12/04 15:15
CoNsTaR: c/c++ 的陣列和 Java 的不一樣 12/04 15:16
steve1012: 喔喔我錯了Qq 12/04 15:18
steve1012: 我只是在想要是你是在用pointer 模擬的話做的到 但就 12/04 15:20
steve1012: 不是陣列 12/04 15:20
MaxHaru: 謝謝大家的回應, 因為實際應用上2維陣列還蠻多的, 12/04 15:37
MaxHaru: 又需要透過index去調用, 所以須要用一個陣列來處理, 12/04 15:38
MaxHaru: 請問一下有其它的方法可以做到類似的功能嗎? 12/04 15:39
DrizzleX: 痾 你是想兩個綁在一起嗎 那試試看struct 12/04 16:06
CoNsTaR: T a[N], b[N]; 12/04 16:13
CoNsTaR: T* p[2] = {a,b}; 12/04 16:13
CoNsTaR: 你是想把兩個陣列當作一個用,像這樣? 12/04 16:13
MaxHaru: 預期做法是"pArr[n]"這個陣列存的是2維陣列的位址.. 12/04 16:16
MaxHaru: Var從pArr[n]取出來之後, 可以像Var[1][2]來使用二維陣列 12/04 16:19
CoNsTaR: 可以做到,但是沒有你想像的那麼方便 建議先學資料結構 12/04 16:30
CoNsTaR: T a[M][N], b[M][N]; 12/04 16:30
CoNsTaR: T* p[M] = {a[0],..,a[M-1]}; 12/04 16:30
CoNsTaR: T* q[M] = {b[0],..,b[M-1]}; 12/04 16:30
CoNsTaR: T** r[2] = {p,q}; 12/04 16:30
stupid0319: 明明就直接用arr1,arr2存取就好了,為什麼要化簡為繁? 12/04 16:35
CoNsTaR: 樓上 我是覺得原 Po 如果藉由這個例子能弄清楚陣列和指 12/04 16:41
CoNsTaR: 標的關係其實是滿值得的啦 12/04 16:41
stupid0319: 好吧,多寫一些自虐的CODE真的會變強嗎XD 12/04 16:45
chuegou: 會阿 心理會變強(笑) 12/04 18:41
hunandy14: https://goo.gl/O5cq5r 12/04 19:00
hunandy14: 你是想要這樣吧~不過我覺得優化一下會比較好~~ 12/04 19:00