【发布时间】:2010-12-20 17:07:07
【问题描述】:
您好,我不确定我是否理解以下代码。如果有人可以阅读我的解释并在我错了时纠正我,我会很高兴。
所以首先我要声明一个结构,其中包含三个 char 数组和一个整数。
struct Employee
{
char last[16];
char first[11];
char title[16];
int salary;
};
之后,我声明了一个函数,该函数接受三个指向 char 的指针和一个整数值。此函数使用 malloc() 和 sizeof() 在堆上创建结构。现在,我在堆上创建的对象并不是很清楚。当我使用 struct Employee* p = malloc(sizeof(struct Employee)) 时,那里会发生什么确切地?
当我使用函数 struct Employee* createEmployee (char* last, char* first, char* title, int salary) 多次使用不同的输入时会发生什么。我知道我会得到一个指针 p 但不是指向堆上同一个结构的同一个指针。那么当我多次使用该函数时,我是否要重写堆上的信息?还是它总是在不同的内存空间中创建一个新对象?
struct Employee* createEmployee(char*, char*, char*, int);
struct Employee* createEmployee(char* last, char* first, char* title, int salary)
{
struct Employee* p = malloc(sizeof(struct Employee));
if (p != NULL)
{
strcpy(p->last, last);
strcpy(p->first, first);
strcpy(p->title, title);
p->salary = salary;
}
return p;
}
如果有人可以向我解释,我会很高兴。非常感谢。
【问题讨论】:
-
这是作业吗?如果是的话,请把它标记为这样,以便家庭作业精灵可以轻松找到它。
-
不,这不是家庭作业。我正在尝试自学 C。
-
我认为最好使用枚举来表示员工的头衔,而不是字符串。通过位移,这也允许多个标题。但是,这只是一个想法,稍后您将在 C 学习课程中遇到这个问题。 :)
标签: c