任何人都可以帮我确定我在这里做错了什么吗?
我有以下结构:
typedef struct cell {
int number;
int marked[10];
int crossed[10];
struct cell *next_sibling;
}cell;
我收到了一个错误:
{
之前的预期表达
在下面的两行中,我尝试初始化struct中定义的数组:
cell grid[10][10];
int main (){
int i = 0, j = 0;
int c;
while (getchar() != EOF){
grid[i][j].number = c - '0';
grid[i][j].marked = {0};
grid[i][j].crossed = {0};
... and so on
}
}
我通常能够初始化一个空数组。但是当它在struct中定义时,我很难做到这一点。
答案 0 :(得分:0)
你在这里做的不是初始化,而是分配,但你不需要初始化它。 C中的全局变量自动进行零初始化。如果您需要做的就是填写number
字段。如果您做必须对marked
和crossed
字段执行某些操作,请使用bzero
或memset
:
bzero(grid[i][j].marked, sizeof grid[i][j].marked);
memset(grid[i][j].marked, 0, sizeof grid[i][j],marked);
如果要分配特定值,您当然也可以这样做:
grid[i][j].marked[3] = 17;
答案 1 :(得分:0)
grid [0] [0]指的是单元格的实例,而不是单元格中的任何一个数组。您只能在声明时初始化数组,因此您可以做的最好的事情是
单元网格[10] [10] = {0};
在C ++中,结构体可以有构造函数 - 结构体和类之间的唯一区别是默认可见性(类为私有,结构为public)。