【发布时间】:2018-12-30 16:13:46
【问题描述】:
我已经建立了一个名为 User 的结构。
因为我使用的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 *'
接下来我该如何申报?它必须是女性类型
【问题讨论】:
-
你有一个类型别名
Women(在结构之后定义),但你没有一个类型struct Women。想想你如何定义结构没有typedef。 -
@Someprogrammerdude 我不应该使用 struct 来创建指向我当前正在防御的结构的指针吗?
-
typedef struct Women { User *userWoman; struct Women *next; }Women;
标签: c pointers linked-list