gpt4 book ai didi

c - 为什么将函数参数传递给结构初始化会返回垃圾或看似没有执行任何操作?

转载 作者:行者123 更新时间:2023-11-30 16:20:26 25 4
gpt4 key购买 nike

我正在尝试在 c 中创建一个函数来创建并返回一个类似于 OOP 中的构造函数的新结构。检查变量时,字符串是垃圾,而数字都是0。在c中不能使用变量初始化结构体吗?

我在网上寻找过正在尝试类似事情的人,但他们都使用文字和字符串来初始化他们的。

typedef struct tArtist{
char realName[20];
int accNum;
double accBal;
char telephoneNumber[15];
double earningPerYear;
} Artist;




...

//function call
Artist artist = newArtist("Real Name", 123, 600.43, "1-(876)-362-2335", 999.99);

Artist newArtist(char name[], int accountNum, double accountBal, char tele[], double earningPerYr) {
Artist tempArtist = {name, accountNum, accountBal, tele, earningPerYr };


return tempArtist;
}

我期望作为测试,realName 是“真实姓名”,但得到了 X{XRc

最佳答案

当您使用 name 作为 Artist 初始化程序中的第一个值时,您正在尝试将指针存储在 char 数组中。这是一个无效的初始值设定项。

您需要明确设置这些字段:

 Artist newArtist(char name[], int accountNum, double accountBal, 
char tele[], double earningPerYr) {
Artist tempArtist = {"", accountNum, accountBal, "", earningPerYr };
strcpy(tempArtist.realName, name);
strcpy(tempArtist.telephoneNumber, tele);

return tempArtist;
}

关于c - 为什么将函数参数传递给结构初始化会返回垃圾或看似没有执行任何操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55305578/

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