任何人都可以帮我确定我在这里做错了什么吗?
我有以下结构:
typedef struct cell {
int number;
int marked[10];
int crossed[10];
struct cell *next_sibling;
}cell;
我收到错误:
Expected expression before {
在下面的两行中,我尝试初始化结构中定义的数组:
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
}
}
我通常能够初始化一个空数组。但是当它在结构体中定义时,我很难做到这一点。
最佳答案
您在这里所做的不是初始化,而是赋值,但您不需要初始化它。 C 中的全局变量自动为零初始化。如果您只需填写number
字段即可。如果您确实必须对标记
和交叉
字段执行某些操作,请使用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;
关于c - 结构体中的数组和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16432655/