Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 结构中的数组和初始化_C_Struct - Fatal编程技术网

C 结构中的数组和初始化

C 结构中的数组和初始化,c,struct,C,Struct,有人能帮我找出我做错了什么吗 我有以下结构: 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;

有人能帮我找出我做错了什么吗

我有以下结构:

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
    }

}

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

这里所做的不是初始化,而是赋值,但您不需要初始化它。C中的全局变量会自动初始化为零。只要填写
number
字段即可e待办事项。如果必须对标记的
和交叉的
字段执行某些操作,请使用
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;

网格[0][0]引用的是单元格的一个实例,而不是单元格中的任何一个数组。您只能在声明时初始化数组,因此您最好

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


在C++中,Struts可以有构造函数——结构和类之间唯一的区别是默认可见性(对于类,对于结构来说是私有的)。< /P>我仍然不能用这种方式初始化它。我将编辑我的文章来显示整个代码,它可能会帮助理解我正在尝试的东西。如果我想初始化标记[]和交叉[],该怎么办?对于0以外的其他值?我可以在结构定义内或在单元格初始化期间执行此操作吗?嗯,您只能在定义处初始化它们,但在配置给定单元格时可以为其内容赋值,是的。答案用一个简单的示例更新。这不起作用,我收到一个错误“初始化器周围缺少大括号”表示初始化是有效的C。你的错误是因为你打开了一些额外的警告,这是值得赞扬的。不过,如果你能避免的话,我不认为你会想要完全初始化这个数据结构。这将是一大堆代码。