数组导致程序崩溃c++

Array causing program to crash c++

本文关键字:崩溃 c++ 程序 数组      更新时间:2023-10-16

所以我在为类编写的程序中遇到了一个问题。当试图更改数组元素的值时,我会看到一个窗口,上面写着"程序已停止工作"。

此代码使我的程序崩溃:

case EAST:
    cout << "test";
    for (int i = 0; i < spaces; i++) {
        if (penDown)
            board[turtleY][turtleX + i] = 1; //this is the line causing the crash
        turtleX += spaces;
    }
break;

turtleX和turtleY通过引用传递到此函数中。

void moveForward(int spaces, bool penDown, int &turtleX, int &turtleY, int currentDirection, int board[][NUM_COLS]) {
switch (currentDirection) {
case NORTH:
    for (int i = 0; i > spaces; i--) {
        if (penDown)
            board[turtleY + i][turtleX] = 1;
            turtleY -= spaces;
    }
    break;
case EAST:
    cout << "test";
    for (int i = 0; i < spaces; i++) {
        if (penDown)
            board[turtleY][turtleX + i] = 1;
        turtleX += spaces;
    }
    break;
case SOUTH:
    for (int i = 0; i < spaces; i++) {
        if (penDown)
            board[turtleY + i][turtleX] = 1;
        turtleY += spaces;
    }
    break;
case WEST:
    break;
}
}

在每个循环中将spaces添加到turtleYturtleX

我建议您将语句移到for循环之外:

case SOUTH:
    for (int i = 0; i < spaces; i++) {
        if (penDown)
            board[turtleY + i][turtleX] = 1;
    }
    turtleY += spaces;
    break;

此外,如果尚未进行边界检查,则需要在向各个方向调整turtleYturtleX之前进行边界检查。