gpt4 book ai didi

c - "error: subscripted value is neither array nor pointer nor vector",但为什么呢?

转载 作者:行者123 更新时间:2023-11-30 17:49:53 24 4
gpt4 key购买 nike

我正在编写一个 Tic-Tac-Toe 程序,并正在为玩家的回合编写一个函数。我以指针 b 的形式传入 Tic-Tac-Toe 棋盘(一个 3x3 数组)。唯一的问题是在最后一行我在标题中得到了错误。

下标值既不是数组,也不是指针,也不是 vector :b[PlayerCoordsX][PlayerCoordsY] = "x";

为了测试,我尝试了多个不同的 = 值。字符和数值都无法解决问题。

这里是缩写代码(我希望)是相关位:

void PlayerTurn(int *b);

...

int main(void)
{
int Board[2][2];
int (*b)[2][2];
b = &Board;

...

void PlayerTurn(int *b);

...

return 0;
}

void PlayerTurn(int *b)
{
int PlayerCoordsX, PlayerCoordsY;

while ((PlayerCoordsX != 1 || PlayerCoordsX != 2 || PlayerCoordsX != 3) && (PlayerCoordsY != 1 || PlayerCoordsY != 2 || PlayerCoordsY != 3))
{
printf("Enter the X coordinate you would like to use:");
scanf("%i", &PlayerCoordsX);
PlayerCoordsX = PlayerCoordsX - 1;

printf("Enter the Y coordinate you would like to use:");
scanf("%i", &PlayerCoordsY);
PlayerCoordsX = PlayerCoordsY - 1;
}

b[PlayerCoordsX][PlayerCoordsY] = "x";
}

最佳答案

由于b是一个指向int的指针,

b[PlayerCoordsX]

是一个整数,不能为b[PlayerCoordsX]添加下标。您需要一个指向 int 的指针:

int **b;

那么你就可以进行双重间接寻址。或者,如果您有一个平面数组,请计算索引而不是使用双索引:

b[PlayerCoordsY * numCols + PlayerCoordsX] = "x";

如果您像您一样定义董事会:

int board[3][3];

然后您可以将函数签名更改为:

void PlayerTurn(int b[][3])

关于c - "error: subscripted value is neither array nor pointer nor vector",但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17586289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com