C - 赋值中不兼容的类型 - 结构和字符数组

标签 c pointers struct

好吧,我的情况的要点是,在尝试初始化我的结构时,我在分配中遇到了不兼容的类型。我对 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]; (字符数组)吗?然后要复制字符串,请使用 strcpystrncpy 而不是 = 运算符,因为您无法将某些内容分配给数组。

关于C - 赋值中不兼容的类型 - 结构和字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376086/

相关文章:

c - 如何在c中聚合文本?

c - 从 Go 初始化灵活数组 C 结构成员

c++ - 从命令行向 C++ 传递参数

C++ 如何删除两个不同的 std::lists 中引用相同元素的指针?

C++ 处理 'struct' 和字符串

C++ - 结构指针数组

c - 有符号整数的算术位移

c++ - 跨平台制作包含子文件夹的目录的方法?

c++ - 更新对象的属性时遇到问题?

在 C 中检查链表是否为空