更新:所以問題很簡單,我標記了答案。謝謝!C++數組索引超過了數組的末尾
所以我試圖製作一個簡單的控制檯應用程序,它使用填充了樹'^'的2D數組,每當有命中時,如果相鄰陣列發生火災,就有可能觸發設置。
問題是數組索引告訴我我超出了界限,並且失敗了我的模擬更新。
這是誤差圖像:
這裏是包含問題的更新的代碼:
void updateForest(char grid[Max][Max], int probFactor)
{
char tempGrid[Max][Max];
for (int r = 0; r < Max; r++)
{
for (int c = 0; c < Max; c++)
{
tempGrid[Max][Max] = grid[Max][Max];
}
}
for (int r = 1; r < Max - 1; r++)
{
for (int c = 1; c < Max - 1; c++)
{
if (checkNeighbour(grid, r, c))
{
if ((rand()%100)+1 < probFactor && grid[r][c] == Tree)
{
tempGrid[r][c] = Burning;
}
if (grid[r][c] == Burning)
{
tempGrid[r][c] = Empty;
}
}
}
}
for (int r = 0; r < Max; r++)
{
for (int c = 0; c < Max; c++)
{
grid[r][c] = tempGrid[r][c];
}
}
}
數組有21個元素。有效索引是0,1,...,19和20.您試圖使用索引21,這是無效的。讓你的數組變大或不索引到目前爲止。 – nwp
你真的應該指出源代碼中的哪一行觸發警告。 – Hurkyl
此外,目前還不清楚你的問題是爲什麼數組索引21應該是一個問題,或爲什麼數組索引21被訪問。 (或別的東西) – Hurkyl