当前位置:  开发笔记 > 编程语言 > 正文

在结构中初始化结构?

如何解决《在结构中初始化结构?》经验,为你挑选了1个好方法。

所以我有以下两种结构

typedef struct clienttable {
    vartable head;
    vartable tail;
} clienttable;

typedef struct vartable {
    int tableid;
    int randominfo;
    struct vartable *next;
} vartable;

我想像这样初始化他们.

clienttable *maintable;
maintable = (clienttable *) malloc (sizeof( clienttable));
maintable->head = {.tableid = 10, .randominfo=NULL, .next=NULL};

但是当我去编译时,我会继续得到一个

expected expression before { token 

错误.我也尝试过{10,NULL}无济于事.

我究竟做错了什么?

另外,我需要malloc同时clientable和所有的客户表中的表,或将只是malloc荷兰国际集团的一个工作?



1> alk..:

我究竟做错了什么?

这个

maintable->head = ...

不是初始化,而是作业.

这个

... = {.tableid = 10, .randominfo=NULL, .next=NULL};

但是只能用于初始化.

所以将后者改为此

... = (vartable) {.tableid = 10, .randominfo=0, .next=NULL};

使用复合文字的作业.


...我是否需要malloc客户端表中的clientable和所有表,或者只是mallocing一个工作?

真的不知道你是"指的是什么所有表 ",但分配clienttable-typed变量你分配为它的成员的内存headtail.你分配什么内存headtail的成员next 都指向.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有