我已经构建了一个名为User的结构。
因为我使用的用户是多个数据结构,所以该结构只存储有关用户的数据
typedef struct{
long id;
char *name;
char *surname;
int age;
char gender;
char *username;
char *password;
char *description;
char *hobbies;
}User;
现在我想为女性创建一个链接列表,所以我创建了
typedef struct{
User *userWoman;
struct Women *next;
}Women;
现在,当我试图为下一个指针分配指针时:
void push(Women **head,User *woman){
if((*head)->next == NULL){
(*head) -> userWoman = woman;
}
else{
Women *newWoman = malloc(sizeof(Women));
if (newWoman == NULL){
printf("Allocation of newWoman failed\n");
exit(1);
}
newWoman -> userWoman = woman;
(*head)->next = newWoman;
}
}
我得到错误:从'Women*'分配给'struct Women*'的指针类型不兼容
下一步怎么申报?一定是那种女人
最佳答案
您可以在一个步骤中定义结构和别名。当然,这是合法的,但是类型别名在解析结构成员时是未知的。因此,在解析成员时,类型aliasWomen
是未知的。您可能在编写Women *next
时遇到编译器错误,struct Women *next
此时不会导致编译器错误,但它被视为不完整类型的前向声明。
为结构命名并使用此名称声明此类型的成员:
typedef struct WomenStruct {
User *userWoman;
struct WomenStruct *next;
} Women;
稍后,
Women*
和struct WomenStruct*
将成为同义词,这与您编写。。。struct WomenStruct {
User *userWoman;
struct WomenStruct *next;
};
typedef struct WomenStruct Women; // let "Women" be an alias for "struct WomenStruct"