[問題] 關於C++ 陣列的位址問題

看板C_and_CPP作者 (天霜凝月)時間12年前 (2011/11/17 23:34), 編輯推噓6(608)
留言14則, 9人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 關於陣列的位址為什麼會有重複 我宣告a[2][3] b[3][2] c[2][2] 這3個陣列 結果我發現a[2][3]這個數值會變的和c[1][1]一樣 我去查a[2][3]的位址 發現和c[1][1]變的一樣 不知道為什麼會發生這種情況 結果導致下面算出來的值都錯誤了 有人知道怎麼解決這種情況嗎 我這個是要計算2個矩陣相乘 a X b = c 我寫成這樣 int x,y,k; for(x=1;x<=2;x++) { for(y=1;y<=2;y++) { c[x][y]=0; for(k=1;k<=3;k++) { c[x][y]=c[x][y]+(*(*(a+x)+k))*(*(*(b+k)+y)); } } } 結果跑出來的結果是錯的 所以我去查每一個值 發現到開始跑x=2的那個迴圈的時候 a[2][3]就會變成和c[1][1]一樣 所以後面的值都錯了 不知道到底是哪裡出問題 請大家幫忙看一下 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.237.62

11/17 23:37, , 1F
從0開始放東西
11/17 23:37, 1F

11/17 23:48, , 2F
11/17 23:48, 2F

11/17 23:50, , 3F
假設宣告a[3] 只能用a[0~2] 不能用a[3]唷
11/17 23:50, 3F

11/18 11:10, , 4F
樓上正解阿阿阿阿阿阿阿
11/18 11:10, 4F

11/18 11:13, , 5F
那假如宣告a[0]的話 可以用a[0]嗎?
11/18 11:13, 5F

11/18 11:21, , 6F
宣告的那個是代表說這個陣列裡面有多少元素
11/18 11:21, 6F

11/18 11:22, , 7F
0的話裡面0個,那宣告有意義嗎= =
11/18 11:22, 7F

11/18 11:46, , 8F
XD
11/18 11:46, 8F

11/18 14:17, , 9F
嗯,據loveme00835 + 規格書表示,宣告不能放零。
11/18 14:17, 9F

11/18 17:01, , 10F
印象中C99可以讓某些 struct hack 可以宣告 a[0] ?
11/18 17:01, 10F

11/18 21:01, , 11F
樓上似乎記錯了 #1DgV76tB
11/18 21:01, 11F

11/18 21:05, , 12F
struct hack 那招應叫 flex array. #1DhhMrOO
11/18 21:05, 12F

11/19 10:22, , 13F
恩...的確是我沒注意到...
11/19 10:22, 13F

11/21 15:20, , 14F
感謝 T大 :)
11/21 15:20, 14F
文章代碼(AID): #1EnIby3i (C_and_CPP)