【发布时间】:2021-08-13 02:36:27
【问题描述】:
可能是一个非常简单的问题,但我正在尝试制作一个井字游戏引擎,这就是代码(稍后放它,因为尽管我关闭了三重坟墓,但它仍然将它放在代码块中,如果下面有一些原因)
我收到以下警告: [警告] 传递 'resetboard' 的参数 1 使指针从整数而不进行强制转换
[警告] 传递 'getnewboardO' 的参数 1 使指针从整数而不进行强制转换
[警告] 传递 'printboard' 的参数 1 使指针从整数而不进行强制转换
我是一个初学者,但我在另一个项目中以几乎相同的方式使用 2d bool 数组,所以我对自己做错了什么感到困惑。
void getnewboardO(char board[3][3])
{
char inputrow;
int inputcoloumn;
scanf("%c%d", &inputrow, &inputcoloumn);
inputcoloumn--;
if(inputrow=='A')
board[0][inputcoloumn]='O';
if(inputrow=='B')
board[1][inputcoloumn]='O';
if(inputrow=='C')
board[2][inputcoloumn]='O';
}
void resetboard(char board[3][3])
{
int i, j;
for (i=0;i<2;i++)
for (j=0;j<3;j++)
board[i][j]='_';
for (j=0;j<3;j++)
board[2][j]=' ';
}
void printboard(char board[3][3])
{
printf("%c|%c|%c\n%c|%c|%c\n%c|%c|%c",board[0][0], board[0][1], board[0][2], board[1][0], board[1][1], board[1][2], board[2][0], board[2][1], board[2][2]);
}
main()
{
char board[3][3];
resetboard(board[3][3]);
printf("_|_|_\n_|_|_\n | |");
getnewboardO(board[3][3]);
printboard(board[3][3]);
}
【问题讨论】:
-
resetboard(board[3][3]);==>resetboard(board);board[3][3]是一个整数char值(但索引超出范围),而不是(指向)数组本身。 -
呃,我必须承认,出于信任我做了你所说的,但它给了我大量 [错误] 下标值既不是数组也不是指针也不是向量
-
@AnProg 你也没有将
char board[3][3];更改为char board;或更改函数签名,是吗? -
还有另外两个需要改变的地方(调用另外两个函数)。我的测试程序编译干净。请注意,我建议更改电话
resetboard(board[3][3]);而不是void resetboard(char board[3][3])。 -
我是个白痴,抱歉现在编译时没有警告
标签: c function multidimensional-array implicit-conversion function-call