c ++将2D数组作为参数传递给函数?

时间:2015-11-18 17:20:10

标签: c++ arrays multidimensional-array

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

这是我的代码:

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

如何使用多数组执行此操作?

3 个答案:

答案 0 :(得分:1)

假设

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";
    }
}

答案 1 :(得分:0)

这是将多数组传递给参数的语法。

首先,在创建功能时,请忽略括号中的第一个数字。即

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

调用你的函数时,请执行此操作。

printBoard(board);

很抱歉,如果回答你自己的问题很奇怪,但它给了我很多帮助。 感谢http://www.geeksforgeeks.org/pass-2d-array-parameter-c/

答案 2 :(得分:0)

我强烈建议使用指针样式传递。对于2D数组,它看起来像:

void display(int **board, int width, int height) {
  for (int i = 0; i < width; i++) {
     for (int j = 0; j < height; j++) {
       if (board[i][j] == ...