[問題] 靜態二維陣列 與 雙重指標

看板C_and_CPP (C/C++)作者 (emeth)時間15年前 (2010/09/13 23:26), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串1/1
遇到的問題: const int w = 3; const int h = 2; int a[w][h] = {0}; int b[w][h] = {0}; bool whichOne = false; int **c = (int **) whichOne? a : b; std::cout<<c[0][0]; 在cout c[0][0]時 會出現run time error 的記憶體錯誤 這問題我突然不知道該如何解絕 請問有大大能給點建議嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.12.30.69

09/13 23:38, , 1F
int (&c)[w][h] = whichOne ? a : b; 用參考來做吧
09/13 23:38, 1F

09/13 23:40, , 2F
轉型不要隨便亂做, 你拿掉就知道原因在哪, 置底第十二
09/13 23:40, 2F

09/13 23:42, , 3F
誡, 要用指標最多只能把 a/b 轉成 int(*)[h], 就像這
09/13 23:42, 3F

09/13 23:42, , 4F
樣 : int (*c)[h] = whichOne ? a : b; 隱含轉換成指
09/13 23:42, 4F

09/13 23:43, , 5F
標實際上是替換成 &a[0] 來做, 型態是 int(*)[h] 而
09/13 23:43, 5F

09/13 23:43, , 6F
不是 int**
09/13 23:43, 6F

09/13 23:45, , 7F
型態不同, 想想看記憶體佈局, c[1] 跟 b[1] 結果差很多
09/13 23:45, 7F

09/13 23:48, , 8F
c[0] => 0, c[0][0] => read address 0
09/13 23:48, 8F

09/13 23:50, , 9F
b[0] => ptr to array start, b[0][0] => read value 0
09/13 23:50, 9F

09/14 08:52, , 10F
十二誡十二 看有那裡寫不好的請各位大大指教囉 XD
09/14 08:52, 10F
文章代碼(AID): #1CZaACP7 (C_and_CPP)
文章代碼(AID): #1CZaACP7 (C_and_CPP)