首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“错误:下标的值既不是数组,也不是指针,也不是向量”,但是为什么呢?

“错误:下标的值既不是数组,也不是指针,也不是向量”,但是为什么呢?
EN

Stack Overflow用户
提问于 2013-07-11 14:15:40
回答 2查看 4.6K关注 0票数 0

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

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

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

以下是缩写的代码(我希望)是相关的部分:

代码语言:javascript
运行
复制
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";
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-11 14:19:31

由于b是指向int指针,

代码语言:javascript
运行
复制
b[PlayerCoordsX]

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

代码语言:javascript
运行
复制
int **b;

然后,您可以执行双重间接操作。或者,如果您有平面数组,请计算索引,而不是使用双索引:

代码语言:javascript
运行
复制
b[PlayerCoordsY * numCols + PlayerCoordsX] = "x";

如果你像你这样定义电路板:

代码语言:javascript
运行
复制
int board[3][3];

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

代码语言:javascript
运行
复制
void PlayerTurn(int b[][3])
票数 0
EN

Stack Overflow用户

发布于 2013-07-11 14:19:23

您的参数b是一个指向整数的指针。这意味着b[PlayerCoordsX]是一个整数,因此b[PlayerCoordsX][PlayerCoordsY]基本上是在尝试使用int (“下标的值”)作为数组。

将二维数组传递给函数时,编译器需要知道数组中的列数。这是因为数组是laid out as a linear block of memory,编译器需要计算该线性数组中的索引。

所以你需要通过

代码语言:javascript
运行
复制
void PlayerTurn(int b[][2])
{
}

但最好是使用#define大小,而不是使用“神奇”值2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17586289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档