当我尝试编译时,我得到一个错误说:"解除指向不完整类型struct Freunde的指针"
那是我的结构:
typedef struct {
char *Name;
struct Freunde *next;
} Freunde;
Run Code Online (Sandbox Code Playgroud)
错误发生在这里:
while (strcmp(Anfang->next->Name, Name) != 0)
Anfang = Anfang->next;
Run Code Online (Sandbox Code Playgroud)
编辑///所以这里是我尝试运行的程序中的更多代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
主要问题是您next将结构的成员定义为,struct Freunde *next;但struct Freunde代码中没有.
首先声明一个struct Freunde,像这样
struct Freunde
{
char *name;
struct Freunde *next;
};
Run Code Online (Sandbox Code Playgroud)
然后你可以typedef,但你不必
typedef struct Freunde Freunde;
Run Code Online (Sandbox Code Playgroud)
也:
malloc()由于这些原因,不要转换返回值malloc()没有返回NULL.