【发布时间】:2021-04-03 13:29:55
【问题描述】:
我有一个数据库结构来存储员工信息
struct employeeData
{
char name[50];
int age;
char rank[50];
char level[50];
char memo[100];
};
在这之后,我声明了一个指针数组,这样
struct employeeData *eData[MAX];
在主函数中。
现在,我有一个函数如下...
void newEmployee(struct employeeData *eData[MAX])
{
prinf("name: ");
scanf("%s", eData[Database] -> name);
printf("%s", eData[Database] -> name);
}
它编译时出现任何错误,当我运行它时,我可以输入员工的姓名,但之后会出现分段错误。
我的问题是什么?
我以为我在 newEmployee 函数中正确使用了指针结构。
【问题讨论】:
-
您发布的代码将无法编译:函数的参数缺少类型规范。假设这是一个指向您的结构之一的指针,您将需要
struct employeeData *eData作为参数列表。另外,为什么有一个指针数组?每个都需要在使用前分配(使用malloc);最好有一个结构数组。 -
你是对的。对不起,我错过了那部分。关于使用 malloc,最好有一个结构数组?我不确定在哪里初始化它。
-
你应该定义数组:struct employeeData eData[MAX];并将其作为指针传递: void newEmployee(Struct employeeData *eData)
-
struct employeeData *eData[MAX];是一个指针,但没有分配内存。