在尝试将值放入标签时 list-> qtag-> label = x; 中的错误在哪里?
struct quad{
int label;
char op[30];
char x[30];
char y[30];
char z[30];
struct quad *next;
};
struct tag{
struct quad *qtag;
struct tag *next2;
};
struct tag *makelist(int x){
struct tag *list;
list=(struct tag*)malloc(sizeof(struct tag));
list->qtag->label=x;
printf("!\n");
return list;
};
答案 0 :(得分:0)
您未在qtag
中初始化list
。可以像这样修复:
list=(struct tag*)malloc(sizeof(struct tag));
list->qtag = (struct quad*)malloc(sizeof(struct quad));
list->qtag->label = x;
不要忘记检查malloc()
的返回值是否存在错误。
答案 1 :(得分:0)
您为初始标记条目分配了内存 - 但您尚未将该数据初始化为任何内容。使用malloc,数据内容很可能是随机的。具体列表 - > qtag并没有指向任何东西,因为你没有把它指向任何东西。
您需要初始化列表 - > qtag指向一个现有的四元结构,或malloc另一块内存 - 和点列表 - > qtag它 - 例如:
struct tag *makelist(int x){
struct tag *list;
list=(struct tag*)malloc(sizeof(struct tag));
q = (struct quad*)malloc(sizeof(struct quad));
list->qtag = q;
list->qtag->label=x;
printf("!\n");
return list;
};