有人可以帮我这个消息吗?

时间:2014-03-23 08:23:49

标签: c function variables struct

我在C中编写程序并声明了以下结构:

   typedef struct
   {
     int type[4][4];
     int color;
   } block;

所以,我编写了以下函数来初始化变量:

     void inicialize(block aux[1])
     {
       aux[0].type[4][4] = {
                               {0, 0, 0, 0},
                               {1, 2, 0, 2},
                               {3, 2, 0, 0},
                               {0, 0, 0, 0}
                           };
     }

但是当我编译程序时,我收到以下消息:

C:\ncurses\tetris.c|11|error: expected expression before '{' token|

拜托,我需要完成这个计划。有人可以帮我这个吗?

感谢。

3 个答案:

答案 0 :(得分:1)

void inicialize(block aux[1]){
    memcpy(aux[0].type,
        (int [4][4]){
                        {0, 0, 0, 0},
                        {1, 2, 0, 2},
                        {3, 2, 0, 0},
                        {0, 0, 0, 0}
                     },
        sizeof(aux[0].type));
}

答案 1 :(得分:0)

  

所以,我编写了以下函数来初始化变量:

不,你没有。那不是初始化,这是一项任务,你不能分配数组。 真正初始化变量,或逐个填充数组元素,或初始化数组memcpy(),或其他......

答案 2 :(得分:0)

您在分配中使用初始化语法。这是不允许的。

您可以只为变量分配所需的值。或者您可以使用初始化语法定义常量,并将该常量分配给变量。

后者看起来像这样:

const int initialBlock[4][4] = { ... };

然后你可以像这样分配:

aux[0].type = initialBlock;

将长度为1的块数组传递给函数也有点奇怪。传递单个结构的地址会更常见。