不兼容的指针类型 - 尝试从另一个函数修改数组

时间:2015-01-15 00:31:13

标签: c arrays pointers

我有一个数组:

char gameBoard[6][6];
// Initilize the array
for(int i = 0; i < 6; i++) {
    for(int o = 0;o < 6;o++) {
        gameBoard[i][o] = ' ';
    }
}

稍后在我的代码中,我有一个我试图使用的函数,它将修改这个数组:

void placePiece(char piece, char *gameBoard) {
    int x = 0;
    int y = 0;
    gameBoard[posXInArray][posYInArray] = piece;
}

我从创建和初始化gameBoard数组的范围调用函数。

placePiece('X', gameBoard);

我这样做的警告:

warning: passing argument 2 of ‘placePiece’ from incompatible pointer type [enabled by default]
    placePiece('X', gameBoard);
    ^
note: expected ‘char *’ but argument is of type ‘char (*)[6]’
 void placePiece(char piece, char *gameBoard);

我很困惑我做错了什么?我假设从另一个函数修改数组我将传递指针,以便我可以直接修改数组。这是不正确的?我也在调用中使用相同的警告消息尝试了&gameBoard。我猜我在做一些不正确的事情?

1 个答案:

答案 0 :(得分:2)

您无法将二维数组传递给此函数

void placePiece(char piece, char *gameBoard)

我认为这对你很好

void placePiece(char piece, unsigned int size, char gameBoard[size][size])

你可以这样使用

placePiesce('X', 6, gameBoard);

或更好

placePiesce('X', sizeof(gameBoard) / sizeof(gameBoard[0]), gameBoard);

由于gameBoard[0]的类型为char,因此也可以使用

placePiesce('X', sizeof(gameBoard), gameBoard);

因为在这种情况下sizeof(gameBoard[0]) == 1