我在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|
拜托,我需要完成这个计划。有人可以帮我这个吗?
感谢。
答案 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的块数组传递给函数也有点奇怪。传递单个结构的地址会更常见。