在结构定义中初始化结构成员时出错

时间:2019-12-09 09:19:47

标签: c list pointers

我试图创建一个结构,该结构在代码上方定义了两个struct nodo类型的指针。但这给了我错误:

  

在'='令牌列表之前预期':',',',';','}'或'属性'a dati_mappa = NULL;”。

这是代码:

typedef int data;

struct nodo
{
    data elem;
    struct nodo *next;
};
typedef struct nodo *lista;

struct mappa {
    data R;
    data C;
    lista dati_mappa = NULL;
    lista pos_valida = NULL;
};

2 个答案:

答案 0 :(得分:9)

不允许在C中对结构成员进行内联初始化。

如果要初始化成员,则需要在创建结构实例之后进行。

答案 1 :(得分:0)

您不能在C中的声明级别执行此操作(在C ++中可以)。

您需要这样的东西:

...
int main()
{
  struct mappa mymap;
  mymap.dati_mappa = NULL;
  mymap.pos_valida = NULL;
  ...
}

或者您可以使用Aggragate初始化:

...
int main()
{
  struct mappa mymap = { .dati_mappa = NULL, 
                         .pos_valida = NULL };
  ...