所以我有以下两种结构
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
一个工作?
答案 0 :(得分:6)
我做错了什么?
此
maintable->head = ...
不是初始化,而是作业。
此
... = {.tableid = 10, .randominfo=NULL, .next=NULL};
但只能用于初始化。
所以将后者改为
... = (vartable) {.tableid = 10, .randominfo=0, .next=NULL};
使用复合文字的作业。
...我是否需要malloc客户端表中的clientable和所有表,或者只是mallocing一个工作?
不确定你所指的是什么" 所有表",但是通过分配一个clienttable
类型的变量,你可以为它分配内存成员head
和tail
。您不为head
和tail
成员next
指向的内容分配内存。