作者:
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會阿 心理會變強(笑)
作者:
CoNsTaR ((const *))
2016-12-04 16:41:00樓上 我是覺得原 Po 如果藉由這個例子能弄清楚陣列和指標的關係其實是滿值得的啦
明明就直接用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:00T 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去調用, 所以須要用一個陣列來處理,請問一下有其它的方法可以做到類似的功能嗎?
喔喔我錯了Qq我只是在想要是你是在用pointer 模擬的話做的到 但就不是陣列
作者:
CoNsTaR ((const *))
2016-12-04 15:15:0013 戒之 12 不管幾維陣列都是一個 starc/c++ 的陣列和 Java 的不一樣
用雙重指標來存取二維陣列?別浪費生命了......陣列跟指標還是有所不同的,不能這樣搞
用錯了,直接arr1,arr2來存取就好了XD,下面通通刪掉