在我的程序中,我遇到了同样的两个错误无数次。下面是程序的一个片段来说明这个问题:
void update_table(char ary[SIZE][SIZE], int row, int column, char token)
{
if(token == 'X')
ary[row][column] = 'X';
else if(token == 'O')
ary[row][column] = 'O';
}..。
void generate_player2_move(char a[SIZE][SIZE], int rw, int cn)
{
char type = 'X';
srand(time(NULL));
rw = rand() % 3;
cn = rand() % 3;
while(check_legal_option(a[SIZE][SIZE], rw, cn) == 1)
{
rw = rand() %3;
cn = rand() %3;
}
printf("Player 2 has entered [row, col]: %d,%d", rw, cn);
update_table(a[SIZE][SIZE], rw, cn, type);
display_table(a[SIZE][SIZE]);
}这是我一直在犯的两种错误:
note: expected ‘char (*)[3]’ but argument is of type ‘char’
void update_table(char ary[SIZE][SIZE], int row, int column, char token)和
warning: passing argument 1 of ‘update_table’ makes pointer from integer without a cast [-Wint-conversion] update_table(a[SIZE][SIZE], rw, cn, type);我对第一个错误感到困惑,因为我认为这个论点是char * [3],然后我不太明白第二个错误。
发布于 2018-03-27 22:32:05
generate_player2_move函数的参数声明为char aSIZE。很明显,你正在试图传递一个二维的字符数组。但是,当传递数组时,实际上是传递指向数组中第一个元素的指针。您没有传递数组本身。因此,因为二维数组实际上是数组的数组,所以参数的声明实际上应该是指向数组的指针,数组的大小为字符。参数应声明如下: char (*a)SIZE
https://stackoverflow.com/questions/49522828
复制相似问题