我正在制作一个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
如何使用多数组执行此操作?
答案 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] == ...