我有一个数组:
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
并显示了相同的警告消息。我猜我在做一些不正确的傻事?
最佳答案
你不能将二维数组传递给这个函数
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
。
关于c - 不兼容的指针类型 - 试图从另一个函数修改数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27954978/