好吧,我的情况的要点是,在尝试初始化我的结构时,我在分配中遇到了不兼容的类型。我对 C 相当陌生,理解指针对我来说是一个很大的挑战,但我已经研究过与此错误类似的问题并尝试了不同的修复方法,但到目前为止还没有运气。如果有人能为我解决这个问题,你将成为我的英雄。
struct Employee {
char* name[100];
int birth_year;
int starting_year;
};
struct Employee* make_employee(char* name, int birth_year, int starting_year);
int main(){
//some main stuff code
}
struct Employee* make_employee(char* name, int birth_year, int starting_year){
struct Employee* newEmpl = (struct Employee*)malloc(sizeof(struct Employee));
newEmpl->name = name;
newEmpl->birth_year = birth_year;
newEmpl->starting_year = starting_year;
return newEmpl;
}
赋值错误发生在 name = name 行。我不知道为什么。 另外,如果我用
切换该行strcpy(&(newEmpl->name), name);
我得到:
警告:从不兼容的指针类型传递“strcpy”的参数 1
我花了两个小时试图找到问题,但没有成功,我想在这里尝试一下。
最佳答案
char* name[100];
是一个指向char
的指针数组,但是:
char* name;
是一个指向char
的指针。
这里:
newEmpl->name = name;
您正在尝试将指向 char
的指针分配给数组,但在 C 中不能将指针分配给数组!事实上,在 C 中你不能给数组分配任何东西。
检查您在程序中使用的类型是否正确。您确定要使用 char *name[100];
而不是 char name[100];
(字符数组)吗?然后要复制字符串,请使用 strcpy
或 strncpy
而不是 =
运算符,因为您无法将某些内容分配给数组。
关于C - 赋值中不兼容的类型 - 结构和字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376086/