我有一个填充了全局变量的二维数组。
#define GRID_WIDTH 19
#define GRID_HEIGHT 10
char grid[GRID_WIDTH][GRID_HEIGHT];
稍后在代码中我使用这个2d数组
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;
}
问题是: 为什么我不能在手表中看到二维阵列中的信息或者当我翻过来时? 我希望你能帮助我。
答案 0 :(得分:1)
我不认为你的代码发布时会出现问题,因为我刚刚在我的visual stuido 2008中对它们进行了测试,它们的printGrid函数运行良好,除了varable ir我全局定义它,你的printGrid函数双重定义x和y,你在函数头中定义它,但在循环中,使用for(int x ...),这意味着没有意义..
结果来自printGird就像这样:
###################
###################
###################
###################
###################
###################
###################
###################
###################
###################
2 3,4请按任意键继续. . .
3,4是使用时在printGrid中传递的x,y的值。
答案 1 :(得分:0)
看起来您的打印代码超出了数组的范围。就像你填充数组时一样,你应该使用
for (int y=0; y < GRID_HEIGHT; ++y)
{
for (int x=0; x < GRID_WIDTH; ++x)
{
这可能是您打印错误的原因。
答案 2 :(得分:0)
问题是为什么我再也看不到我的2D阵列了。 它再次运作。不知道出了什么问题。但下图显示了手表的正确使用方法。我用它来检查二维数组中的信息。但它没有显示一段时间的信息只是网格{...}而不是网格0x00字符(*网格)[25],然后是关于行和列的信息。