所以我做了一些关于这个错误的挖掘,我似乎无缘无故地得到它(显然不是这样的,尽管我决定这样做)
在我的.h文件中,我声明了
typedef struct setCDT *setADT;
在初始化中我有
struct setCDT{
setElementT x[MaxVal];
int len;
};
setADT setNew(){
setADT set;
set=(setADT)malloc(sizeof *set);
set->len=0;
return(set);
}
我稍后在代码中更改了值,如果我需要发布,我可以发布,但据我所知,这与我如何设置结构有关。
在我的驱动程序中,我有setADT A = setNew();
但是当我调用printf("%d", A->len);
时,它会抛出此错误。
有什么想法吗?
答案 0 :(得分:3)
如果没有真正看到代码,分析这个很难,但我猜测包含该行的文件:
printf("%d", A->len)
不是您拥有struct setCDT
定义的文件;相反,它只包含带有
.h
文件
typedef struct setCDT *setADT;
如果要操纵其他文件中的成员变量,则需要将struct setCDT
定义放在.h
文件中。
答案 1 :(得分:1)
这似乎是个问题
set=(setADT)malloc(sizeof *set);
应该是
set=(setADT)malloc(sizeof(struct setCDT));