struct _stdata{
int stid;
int sttype;
struct stdata *nextptr;
};
typedef struct _stdata stdata;
stdata *new = malloc(sizeof(stdata));
new->nextptr = new;
在你的struct中应该有
struct _stdata *nextptr;
这就是您的定义是如何设置的。下面的代码对你有用:
typedef struct stdata stdata;
struct stdata
{
int stid;
int sttype;
stdata *nextptr;
};
或者,你可以按照Doug的建议去做,但是像这样定义你的结构会使你的代码更简洁。
错误/警告在这一行吗?
stdata *new = malloc(sizeof(stdata));
你只需要包含一个强制转换:
stdata *new = (stdata*) malloc(sizeof(stdata));
顺便说一下,"new"是一个糟糕的变量名,因为它在c++中是一个保留字,它看起来对大多数人来说非常混乱! 您的代码有一些问题,但要使其编译,您必须将结构中的指针类型更改为stdata, struct _stdata会导致您出现问题。还要将类型定义放在文件的顶部,并为malloc包含stdlib.h。
在你的struct中,你已经在定义stdata之前使用了它。您应该使用_stdata来代替