作者wxtab019 (天霜凝月)
看板C_and_CPP
標題[問題] 關於C++ 陣列的位址問題
時間Thu Nov 17 23:34:17 2011
開發平台(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
推 ericinttu:從0開始放東西 11/17 23:37
推 KTFGU:假設宣告a[3] 只能用a[0~2] 不能用a[3]唷 11/17 23:50
→ hohoww:樓上正解阿阿阿阿阿阿阿 11/18 11:10
推 zheng2010:那假如宣告a[0]的話 可以用a[0]嗎? 11/18 11:13
推 diabloevagto:宣告的那個是代表說這個陣列裡面有多少元素 11/18 11:21
→ diabloevagto:0的話裡面0個,那宣告有意義嗎= = 11/18 11:22
→ bernachom:XD 11/18 11:46
→ tropical72:嗯,據loveme00835 + 規格書表示,宣告不能放零。 11/18 14:17
推 xatier:印象中C99可以讓某些 struct hack 可以宣告 a[0] ? 11/18 17:01
→ tropical72:struct hack 那招應叫 flex array. #1DhhMrOO 11/18 21:05
→ wxtab019:恩...的確是我沒注意到... 11/19 10:22
推 xatier:感謝 T大 :) 11/21 15:20