我在编写一个创建结构的函数时遇到问题,并填充了作为参数传入的数据的字段。我对C很新,所以这对我来说非常具有挑战性。
我创建了一个名为“Employee”的结构,其中包含名称,出生年份和开始年份的字段。
typedef struct {
char* name;
int birthyear;
int startyear;
} Employee;
对于我创建的函数,我不断收到有关解除指向不完整类型的指针的错误。另外,对于将sizeof无效应用于不完整类型struct Employee,我收到错误。
Employee* make_employee(char *name, int birthyear, int startyear) {
struct Employee* newemployee = (struct Employee*)malloc(sizeof(struct Employee));
newemployee->name = name;
newemployee->birthyear = birthyear;
newemployee->startyear = startyear;
return newemployee;
}
我确信我只是犯了很简单的错误,但非常感谢帮助和解释!
答案 0 :(得分:2)
你唯一的问题是这一行:
struct Employee* newemployee = (struct Employee*)malloc(sizeof(struct Employee));
struct
个关键字在您的情况下是错误的。由于您定义和typedef
编辑结构的方式,没有这样的类型struct Employee
- 只有简单的typedef Employee
才有效。只需删除那里的所有三个struct
,你应该没问题:
Employee *newemployee = malloc(sizeof(Employee));
为清晰起见,我删除了不必要的演员表。
或者,您可以更改结构定义以包含结构名称,而不是仅仅创建一个匿名结构并typdef
:
typedef struct Employee {
char *name;
int birthyear;
int startyearl
} Employee;