gpt4 book ai didi

c - 结构中的初始化错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:58 25 4
gpt4 key购买 nike

 struct college      
{
char name[30];
char course[30];
int fee;
};
struct college c1={"purnia","m.com",5000};
struct college c2;

int main()
{
struct college c2={"magadh","hazipur",5200}; //1
c2.name="magadh"; // 2
c2.course="fine arts"; // 3
c2.fee=3000; //4
strcpy(c2.name,"godda"); //5

}

第 2 行和第 3 行给出错误,因为类型分配不兼容,而第 1 行和第 5 行工作正常。这仅发生在 String 类型成员上。是因为无法分配数组,但为什么第 1 行工作正常。提前致谢。

最佳答案

第 1 行有效,因为您不是使用指向字符串的指针初始化成员,而是使用该字符串内容初始化数组。
当您尝试执行时:

struct college c2={"magadh","hazipur",5200};

编译器在内存中为结构保留空间,并分别用"magadh" 初始化数组namecourse “hazipur”。但是当你编码时:

c2.name="magadh";

您正在尝试在内存中创建一个初始化字符串 "magadh",然后将其地址分配给数组 c2.name
虽然使用 strcpy() 将新字符串复制到数组是完全合法的。

关于c - 结构中的初始化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687120/

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