c++ - 使用指向二维数组的一维指针数组?

标签 c++ arrays pointers

所以我正在开发一个 Tic-Tac-Toe 游戏,对于我的输入函数,我得到了玩家所做的移动以将其作为整数存储在二维数组中,输入是使用对一维数组的引用获得的指向二维数组中位置的指针。

但是我的问题是,当我似乎通过使用指针将多维数组的平方值设置为某个值时,没有任何反应。

这是输入函数:

void Game::input(Board b){
int *spots[9]; // Possible spots for the input
bool validInput = false;
spots[0] = &b.board[2][0];
spots[1] = &b.board[2][1];
spots[2] = &b.board[2][2];
spots[3] = &b.board[1][0];
spots[4] = &b.board[1][1];
spots[5] = &b.board[1][2];
spots[6] = &b.board[0][0];
spots[7] = &b.board[0][1];
spots[8] = &b.board[0][2];
redo:
    cout << ">> " << endl;
    int input; // Input
    cin >> input; // Get the input
    validInput = cin;
    if(!validInput){
        cout << "Numbers only please!" << endl;
        cin.clear();
        while(cin.get() != '\n');
        goto redo;
    }
    if(input > 9 || input <= 0){
        cout << "Invalid move!" << endl;
        goto redo;
    }
    input--; // Subtract 1 for array location
    if(*spots[input] != 0){
        cout << "Square is already being used!" << endl;
        goto redo;
    }
    *spots[input] = 1;
}

现在,假设我输入数字 7。它应该将 b.board[0][0] 设置为 1。 然而这似乎并没有发生。当我之后运行一个单元案例时,board[0][0] 似乎没有设置为 1,它也没有反射(reflect)在我的数组中。我在这里弄乱了指针吗?

最佳答案

您的函数的参数是按值传递的,因此您对其所做的任何更改都不会被识别,因为按值传递会创建参数的拷贝。考虑改为通过指针或引用传递。

关于c++ - 使用指向二维数组的一维指针数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11695324/

相关文章:

c++ - Gui开发应该用什么api,c++

c++ - 为什么全局变量和静态变量被初始化为其默认值?

c++ - 使用 std::count 计算一对数组中的相等值

c - 返回前后指针值不同

c - C 中字符串前的 "*"是什么意思?

c++ - 在屏幕上渲染 3D 点的最简单方法(C++ Windows Visual Studio)

c++ - 循环比逐一遍历快吗

android - 在数组列表中搜索

C++将值传递给函数中的二维字符数组

Javascript:将函数指针放入对象中?