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循环来初始化我的数组并完成工作,但我的初始化对我来说似乎是正确的,我想知道我做错了什么.
在数组元素周围需要一组额外的花括号.你错过了外套:
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)
如果你真的打算用零分配整个东西,你可以使用简化的初始化器:
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)