0

谁能帮我确定我在这里做错了什么?

我有以下结构:

typedef struct cell {
    int number;
    int marked[10];
    int crossed[10];
    struct cell *next_sibling;
}cell;

我收到一个错误:

{ 之前的预期表达式

在下面的两行中,我尝试初始化结构中定义的数组:

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
    }

}

我通常能够初始化一个空数组。但是当它在结构中定义时,我很难做到这一点。

4

2 回答 2

0

你在这里做的不是初始化,而是赋值,但你不需要初始化它。C 中的全局变量会自动进行零初始化。如果您只需要填写这些字段,则只需填写这些number字段。如果您必须markedandcrossed字段做一些事情,请使用bzeroor 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;
于 2013-05-08T04:29:52.627 回答
0

grid[0][0] 指的是单元格的一个实例,而不是单元格中的任何一个数组。你只能在声明时初始化数组,所以你能做的最好的就是

单元格[10][10] = {0};

在 C++ 中,结构可以有构造函数——结构和类之间的唯一区别是默认可见性(类是私有的,结构是公共的)。

于 2013-05-08T04:32:25.897 回答