我知道多维数组的内部表示与" 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
的两个维度?