0

我有一个充满全局变量的二维数组。

#define GRID_WIDTH 19
#define GRID_HEIGHT 10
char grid[GRID_WIDTH][GRID_HEIGHT];

稍后在代码中我使用这个二维数组

void Grid::ResetGrid()
{
    // Empty the console screen
    system("cls");

    // Fills the grid with '#' walls
    for (int i=0; i<GRID_WIDTH; i++)
    {
        for(int j = 0; j <GRID_HEIGHT; j++)
            grid[i][j] = '#';
    }
    ir = 2;
}

当我运行程序时,我使用手表和断点。一开始,网格上的手表说:

Name:  grid
Value: [0] "###################"
           [0] '#'
           [1] '#'
           [2] '#' 
//and so on, i could expand it and look at every part of the array


type: char

但现在它坏了,它只显示了这一点:

Name:  grid
Value: {...}
type: Grid

奇怪的是我没有改变数组代码,只写了比较数组内部的代码行。

将其打印到控制台的代码:

void Grid::PrintGrid(int currentX, int currentY )
{
    // Empty the console screen
    system("cls");

    // Displays the finished maze to the screen.
    for (int y=0; y <  GRID_HEIGHT; y++)
    {
        for (int x=0; x <  GRID_WIDTH; x++)
        {
            cout << grid[x][y];
        }
        cout << endl;
    }
    // Just for testing, which direction and on what position the solver is
    cout << ir << "    " << currentX << "," << currentY;
}

问题是: 为什么我在手表中或当我呼啸而过时看不到二维数组中的信息?我希望你能帮助我。

4

3 回答 3

1

我认为问题不会发生在您发布的代码上,因为我只是在我的visual stuido 2008 中测试了它们,它们在您的printGrid 函数中运行良好,除了我定义的变量ir 和您的printGrid 函数双重定义x 和y,你在函数头中定义了它,但是在循环中,使用for(int x ...),这意味着没有意义..

刚刚来自 printGird 的结果是这样的:

###################
###################
###################
###################
###################
###################
###################
###################
###################
###################
2    3,4请按任意键继续. . .

3、4是使用时传入printGrid的x、y的值。

于 2013-04-01T21:30:57.243 回答
0

看起来您的打印代码超出了数组的范围。就像你填充数组时一样,你应该使用

for (int y=0; y < GRID_HEIGHT; ++y)
{
    for (int x=0; x < GRID_WIDTH; ++x)
    {

这可能是您打印错误的原因。

于 2013-04-01T20:54:28.167 回答
0

问题是为什么我在手表上看不到我的二维数组了。它又开始工作了。不知道出了什么问题。但下图显示了手表的正确使用方法。我用它来检查二维数组中的信息。但它暂时没有显示信息,只是 grid {...} 而不是 grid 0x00 char (* grid)[25] 然后是有关行和列的信息。

网格上的这只手表有一段时间没用了

于 2013-04-07T20:36:46.897 回答