c++将二维数组作为参数传递给函数?

标签 c++ arrays multidimensional-array

<分区>

我正在制作一个井字游戏。我正在尝试将多维数组传递给函数。

这是我的代码:

void printBoard(int board[3][3]) {

    for (int j = 1; j < 4; j++) {
        for (int i = 1; i < 4; i++) {
            if (board[j - 1][i - 1] == 0)
                cout << "_  ";
            if (board[j - 1][i - 1] == 1)
                cout << "O ";
            if (board[j - 1][i - 1] == 2)
                cout << "X ";
            if ((i % 3 == 0))
                cout << "\n";
        }
    }//end 1st for
}//end function

我不断收到错误。我进行了研究,并且使用指针成功地将一维数组作为参数传递。

这是代码:

void display(int *p, int len){

    for (int i = 0; i < len; i ++){
        std::cout << "\n" << *(p + i);
    }//end for
}//end function

如何使用多阵列执行此操作?

最佳答案

假设

int board[3][3];
//..
printBoard(board);

以下(和您的方法)是正确的:

void printBoard(const int (&board)[3][3]) {
    for (const auto& a : board) {
        for (int e : a) {
            switch (e) {
                case 0: std::cout << "_  "; break;
                case 1: std::cout << "O  "; break;
                case 2: std::cout << "X  "; break;
            }
        }
        std::cout << "\n";
    }
}

关于c++将二维数组作为参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33786345/

相关文章:

c++ - 在 C++ 中全局使用二维数组

javascript - i 没有在 while 循环中定义

c++ - 编写内存管理器和整理内存碎片

c++ - 在条件中使用 boost::tribool 时是编译器错误还是我的错误?

c++ - 递归调用段错误问题

javascript - 按间隔对对象数组进行分组

arrays - Bash - 如何将列表分配给数组成员

c++ - 寻找类似Windows Paint的Qt开源项目

javascript - 使用 jQuery Validate 验证数组

java - 将数组存储在二维数组Java中