gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:17:18 25 4
gpt4 key购买 nike

好吧,我的情况的要点是,在尝试初始化我的结构时,我在分配中遇到了不兼容的类型。我对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com