【发布时间】:2021-03-02 05:05:48
【问题描述】:
所以我查找了结构的各个成员的 malloc,但只找到了一个简单的例子,即 double a、int b、然后是 sizeof(a + b)。我正在尝试对结构中的字符进行类似的努力,但无法弄清楚这是如何工作的。从在线资源中,我需要在变量之间使用逗号而不是 +,因为它是字符,尽管它不是很清楚。我可以 malloc 结构的整个大小,但这不是预期的目标。我正在优化空间。
文件 1
typedef struct _TeamInfo_s {
char name[MAXNAME];
char nickname[MAXNICKNAME];
MLSconf_t conf;
float ppg;
int pts;
int gp;
int win;
int loss;
int tie;
} TeamInfo_t, *TeamInfoPtr_t;
在文件 2 中用于 malloc
char* createKey(TeamInfoPtr_t teamInfoPtr) {
//TODO: WRITE THIS FUNCTION
char* name = malloc(sizeof(TeamInfo_t.nickname,TeamInfo_t.name));
//Extra code here for setting name
return name;
}
【问题讨论】:
-
我不明白你想做什么。你想知道名字和昵称的大小吗?
-
“结构的单个成员的malloc”:你不能这样做。所有成员都是连续的。您不能分配结构的一部分...除非您不读取或写入最后一个成员,在这种情况下,我建议您不要声明这些成员
-
如果您正在优化空间,请声明指针而不是数组,以将名称调整为实际名称
-
sizeof是一元运算符。你不能像sizeof(TeamInfo_t.nickname,TeamInfo_t.name)那样向它传递两个参数。也许你想要总尺寸?sizeof(team.nickname) +sizeof (team.name)之类的东西? -
你已经定义了你的数组长度,为什么不使用
char *name = malloc(MAXNAME+MAXNICKNAME);?