C语言 制作一个链表,问题是它一直说指针类型不兼容


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来代替

相关内容

  • 没有找到相关文章

最新更新