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

时间:2010-07-19 10:24:31

标签: multidimensional-array arduino

我只是构建了我的拳头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} }
};

这是我得到的错误:

  

错误:在'{'标记

之前预期的非限定标识

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

6 个答案:

答案 0 :(得分:9)

你的数组元素周围需要一组额外的花括号。你错过了外部集合:

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} }
    }
};

答案 1 :(得分:5)

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

int cube_matrix[3][3][3] = {0};

如果你想要的不仅仅是零,你也可以这样做:

#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;
}

输出如下所示:

$ ./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

答案 2 :(得分:0)

尝试类似:

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} }
}
};

答案 3 :(得分:0)

(更多提示)

如果你打算使用0和1,它似乎更快/更轻的布尔而不是整数。我目前正在研究一个大矩阵和arduino

ps:好像我无法回复

答案 4 :(得分:0)

您不需要使用所有大括号,请尝试以下方法:

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 }
  }
};

答案 5 :(得分:0)

int cube_matrix[3][3][3] = {

{{0,1,2},// row 0
{3,4,5},
{6,7,8}},


 {{9,10,11},
  {12,13,14},
  {15,16,17}},

 {{18,19,20},
  {21,22,23},
  {24,25,26}}


};



void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
for (int i=0;i<3;i++){
  for (int j=0;j<3;j++){
    for(int k=0;k<3;k++){

  Serial.println(cube_matrix[i][j][k]);
  delay(1000);
   }
  }
 }
}