gpt4 book ai didi

c - 为什么通过强制转换来动态分配结构不起作用?

转载 作者:行者123 更新时间:2023-11-30 14:51:01 25 4
gpt4 key购买 nike

我有以下结构:

typedef struct ${
char author[27];
char iso[2];
int nrVolumes;
TVolume* volume; //this is another struct
}TAuthor;

我需要一个函数来返回指向 TAuthor 的指针。该函数将传递一个 int-nrVol- 并且它必须返回一个指向 TAuthor 的指针,该指针具有 nrVolumes 字段 = nrVol。我已经做到了功能。

TAuthor* aloc1(int nrVol){
TAuthor* new = (TAuthor*)malloc(sizeof(TAuthor));
new->nrVolumes = nrVol;
return new;
}

这按预期运行。

TAuthor* aloc2(int nrVol){
char* new = malloc(sizeof(TAuthor));
(TAuthor*)new->nrVolumes = nrVol;
return (TAuthor*)new;
}

在编译“aloc2”时出现此错误: 请求非结构或 union 中的成员“nrVolumes”

为什么我的选角不起作用?由于“new”只是一个字节数组,我想即使通过强制转换,编译器也不知道哪些字节负责哪个字段,但我不确定这一点

最佳答案

您需要首先将 new 类型转换为 TAuthor,然后将其指向其成员:

TAuthor* aloc2(int nrVol){
char* new = malloc(sizeof(TAuthor));
((TAuthor*)new)->nrVolumes = nrVol;
return (TAuthor*)new;
}

关于c - 为什么通过强制转换来动态分配结构不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48620880/

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