C:如何创建一个包含二维数组的二维数组?

C: How can I create a 2d array that hold 2d arrays?

例如,我在 2x2 二维数组中生成了 1 和 0 的“区域”。但我需要存储其中的 9 个区域,以便随时从另一个 3x3 二维数组“地图”访问。区域数组是随机生成的,一旦添加到 2d 地图数组中就需要保持不变,这样我就可以“离开”一个区域并返回并且它是相同的。有点像 ASCII 游戏

这样

int zone[2][2];
// fill zone array
int map[3][3];
map[0][0] = zone;

我认为为了简单起见,您可以在 c 中使用 struct。用struct

管理和修改会更容易
#include <stdio.h>

struct Zone {
    int zone[2][2];
};

int main()
{
    struct Zone map[3][3];
    struct Zone zone1;
    int i, j;
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 2; j++) {
            zone1.zone[i][j] = i + j; // putting some values for example
        }
    }
    map[0][0] = zone1;
}

您可以创建一个 multi-dimensional 9x2x2 数组,其中每个 2x2 区域都通过其区域索引 (0-8) 访问。

int zone[9][2][2];

// I can now access any of the nine 2x2 zones using indices 0-8
zone[0][0][0]
zone[1][0][0]
zone[2][0][0]
...
zone[8][0][0]