家庭作业帮助 - 创建一个分配结构并填写字段的函数

时间:2013-02-03 17:51:44

标签: c struct

我在编写一个创建结构的函数时遇到问题,并填充了作为参数传入的数据的字段。我对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;
}

我确信我只是犯了很简单的错误,但非常感谢帮助和解释!

1 个答案:

答案 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;