将2D数组作为明确定义的平面数组进行访问吗?

时间:2017-06-17 10:58:40

标签: c

我知道多维数组的内部表示与" flattened"相同。数组,但我在这里寻找答案如果(如果是,如何在哪里)C标准允许我请执行下列操作。也许我错过了什么,但我找不到任何段落告诉我,例如int []int [][]兼容类型

具体背景:我做了自己的玩具" Lights Out游戏的实现,我在代表董事会的游戏状态结构中有以下内容:

struct context
{
    // [...]
    int board[5][5];
    // [...]
};

这是"布尔整数"的二维数组。指示某个位置是否亮起。当所有位置都没有点亮时赢得比赛,我会做以下检查:

// parameter is `struct context *ctx`

for (int i = 0; i < 25; ++i)
{
    if (((int *)ctx->board)[i])
    {
        won = 0;
        break;
    }
}

现在,这段代码有效,但是它实际上是定义良好的还是应该使用两个嵌套循环来迭代ctx->board的两个维度?

0 个答案:

没有答案