[英]dereferencing Pointer to incomplete type struct
当我尝试编译时,出现错误消息:“将指针解引用为不完整的类型结构Freunde”
那就是我的结构:
typedef struct {
char *Name;
struct Freunde *next;
} Freunde;
错误发生在这里:
while (strcmp(Anfang->next->Name, Name) != 0)
Anfang = Anfang->next;
编辑///因此,这是我尝试运行的程序中的更多代码:
void add(Freunde* Anfang, char* Name) {
Freunde * naechster;
while (Anfang->next != NULL) {
Anfang = Anfang->next;
}
Anfang->next = (Freunde*) malloc(sizeof(Freunde));
naechster = Anfang->next;
naechster->Name = Name;
naechster->next = NULL;
}
int main() {
Freunde *liste;
liste = (Freunde*) malloc(sizeof(Freunde));
liste->Name = "Mert";
liste->next = NULL;
add(liste, "Thomas");
add(liste, "Markus");
add(liste, "Hanko");
Ausgabe(liste);
return 0;
}
主要问题是您将结构的next
成员定义为struct Freunde *next;
但您的代码中没有struct Freunde
。
首先声明一个struct Freunde
,像这样
struct Freunde
{
char *name;
struct Freunde *next;
};
然后您可以输入typedef
,但不必
typedef struct Freunde Freunde;
也:
malloc()
的返回值 malloc()
没有返回NULL
。 问题的另一方面,或另一种思考方式,是您从一个结构创建一个typedef
,并尝试将指向该结构类型的指针作为成员。
typedef struct {
char *Name;
struct Freunde *next;
} Freunde;
如前所述,当声明成员指针struct Freunde *next;
,编译器还不知道什么是Freunde
。 因此错误。
为了解决这个问题,您可以按照其他答案中的描述进行操作,也可以在声明中包含结构名称标签。
typedef struct Freunde {
char *Name;
struct Freunde *next;
} Freunde;
在这种情况下, struct Freunde {...
告诉编译器有一个名为Freunde
的结构,因此当到达您的成员时, struct Freunde *next;
没事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.