c - 结构体中的数组和初始化

标签 c struct

任何人都可以帮我确定我在这里做错了什么吗?

我有以下结构:

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 字段即可。如果您确实必须对标记交叉字段执行某些操作,请使用bzeromemset:

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/

相关文章:

c - 循环运行所花费的时间

c - 如何找到不相关的未使用属性?

c++ - 在 C++ 中使用结构的 STL 列表

c++ - 无法围绕单个单词的输出及其相应的行号

C 结构--错误 : parameter name omitted

c++ - 求解字符串中的等式以得到 C

c - for循环无限运行为什么?

比较小写和大写。

c# - 为什么.NET 的 Version 是类而不是结构?

iphone - Objective-C 和 C++ 中结构的大小