c++表值从1到512
C++ Table value changes from 1 to 512
本文关键字:c++ 更新时间:2023-10-16
我有一个包含整数值的表availableRows。当我第一次显示availableRows[0]的值时,它显示了正确的值。但是,在for循环中,它显示了一个完全不同的数字,512。
我做错了什么?
int row;
int randomColumn;
int *availableRows = getAvailableRows();
cout << availableRows[0]; // It shows the correct value
for (int column = 0; column < COLUMN_GRID; column++){
row = availableRows[column];
cout << row; // But here it shows 512, why ?
/* Simulates a winning point */
if (row != -1 && simulateWin(row, column)){
GRID[row][column] = COMPUTER;
COUNT += 1;
return;
}
}
int *getAvailableRows(){
int availableRows[7] = {-1, -1, -1, -1, -1, -1, -1};
for (int column = 0; column < COLUMN_GRID; column++){
for (int row = 0; row < ROW_GRID; row++){
if (GRID[row][column] == NONE){
availableRows[column] = row;
break;
}
}
}
return availableRows;
}
编辑:我增加了getAvailableRows()函数。 谁能告诉我为什么我做的不好?我不太懂指针。我可以猜测函数getAvailableRows
返回指向函数中定义的局部数组(更准确地说是局部数组的第一个元素)的指针。因此,程序的行为是未定义的,因为数组的生命周期将在退出函数后结束(它可以被其他数据覆盖)。
编辑:正如你所显示的函数的代码,证实了我的猜测,然后改变函数如下方式
std::array<int, 7> getAvailableRows(){
std::array<int, 7> availableRows = {-1, -1, -1, -1, -1, -1, -1};
for (int column = 0; column < COLUMN_GRID; column++){
for (int row = 0; row < ROW_GRID; row++){
if (GRID[row][column] == NONE){
availableRows[column] = row;
break;
}
}
}
return availableRows;
}
相关文章:
- 没有找到相关文章