如何在Arduino中初始化三维数组?

man*_*uko 1 arduino multidimensional-array

我只是建立了我的拳头LED立方体,并希望稍微扩展测试代码.为了解决我的3x3x3立方体的每个LED,我想使用相应的三维数组,但是我的初始化时出错了.

这是我做的:

int cube_matrix[3][3][3] =
{
    { {0}, {0}, {0} },
    { {0}, {0}, {0} },
    { {0}, {0}, {0} }
},
{
    { {0}, {0}, {0} },
    { {0}, {0}, {0} },
    { {0}, {0}, {0} }
},
{
    { {0}, {0}, {0} },
    { {0}, {0}, {0} },
    { {0}, {0}, {0} }
};
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

错误:在'{'标记之前预期的unqualified-id

我可以使用for循环来初始化我的数组并完成工作,但我的初始化对我来说似乎是正确的,我想知道我做错了什么.

lep*_*pie 8

在数组元素周围需要一组额外的花括号.你错过了外套:

int cube_matrix[3][3][3] = {
    {
        { {0}, {0}, {0} },
        { {0}, {0}, {0} },
        { {0}, {0}, {0} }
    },
    {
        { {0}, {0}, {0} },
        { {0}, {0}, {0} },
        { {0}, {0}, {0} }
    },
    {
        { {0}, {0}, {0} },
        { {0}, {0}, {0} },
        { {0}, {0}, {0} }
    }
};
Run Code Online (Sandbox Code Playgroud)


sar*_*old 5

如果你真的打算用零分配整个东西,你可以使用简化的初始化器:

int cube_matrix[3][3][3] = {0};
Run Code Online (Sandbox Code Playgroud)

如果你喜欢那里的零以上,你也可以这样做:

#include <stdio.h>

int main(int argc, char* argv[]) {

    int cube_matrix[3][3][3] = {1, 2, 3, 4, 5};
    int i, j, k;

    for (i=0; i<3; i++)
            for (j=0; j<3; j++)
                    for (k=0; k<3; k++)
                            printf("%i %i %i: %i\n", i, j, k, cube_matrix[i][j][k]);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样:

$ ./a.out
0 0 0: 1
0 0 1: 2
0 0 2: 3
0 1 0: 4
0 1 1: 5
0 1 2: 0
0 2 0: 0
0 2 1: 0
0 2 2: 0
1 0 0: 0
1 0 1: 0
1 0 2: 0
1 1 0: 0
1 1 1: 0
1 1 2: 0
1 2 0: 0
1 2 1: 0
1 2 2: 0
2 0 0: 0
2 0 1: 0
2 0 2: 0
2 1 0: 0
2 1 1: 0
2 1 2: 0
2 2 0: 0
2 2 1: 0
2 2 2: 0
Run Code Online (Sandbox Code Playgroud)