试图在C中创建一个数组数组

时间:2012-02-20 03:30:56

标签: c arrays boolean

所以我有一堆布尔数组,我想把它放到一个数组中以便于访问,但由于某种原因,这不太有效。

我的数组看起来像这样:

boolean l1_000[8] = {1,0,0,0,0,0,0,0};

我用:

声明我的数组数组
boolean level1[8];

然后我想我可以将这两个中的任何一个(第一个直接声明这些数组我在大数组上设置它们):

level1[0] = {1,0,0,0,0,0,0,0};
level1[0] = l1_000;

我也尝试过level1 [8] [],但这也没用。那么我在这里做错了什么?我该怎么做?

编辑:所以我设法通过将数组声明为boolean * level1 [8]来做到这一点,但这只允许我做level1 [0] = l1_000。有什么方法可以做level1 [0] = {1,0,0,0,0,0,0,0}?

2 个答案:

答案 0 :(得分:5)

如果要存储已创建的数组而不复制每个元素,则不能声明数组数组,但是可以声明一个指针数组:

boolean* level1[] = {
    l1_000, // the array name decays to a pointer to the first element
    l2_000,
    // etc
};

答案 1 :(得分:1)

我的C-fu有点弱,但你必须这样做:

int l1_000[8] = {1,0,0,0,0,0,0,0}; // one row
int level1[8][8];// 8 high, 8 wide
memcpy(level1[0], l1_000, sizeof(int)*8); // size of int * number of memory elements

基本上只有当你正在初始化它时才会使用int variable[],而在其他情况下它将不起作用。

也像这样设置数组位置

level1[0] = l1_000;

不起作用,因为您尝试将第一个元素设置为数组。