2

我刚刚构建了我的第一个 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} }
};

这是我得到的错误:

错误:“{”令牌之前的预期不合格ID

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

4

6 回答 6

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} }
    }
};
于 2010-07-19T10:43:52.077 回答
6

如果您真的打算用零分配整个事物,则可以使用简化的初始化程序:

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
于 2010-07-19T10:41:27.717 回答
1

你不需要使用所有的大括号,试试这个:

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 }
  }
};
于 2017-08-07T18:24:25.487 回答
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} }
}
};
于 2011-11-10T15:29:56.433 回答
0

(更多提示)

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

ps:好像不能回复

于 2012-11-27T19:23:39.923 回答
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);
   }
  }
 }
}
于 2019-05-20T03:14:41.937 回答