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;
}
相关文章:
  • 没有找到相关文章