【发布时间】:2017-10-27 10:26:18
【问题描述】:
当我使用这样的代码时:
typedef struct {
int x;
int *pInt;
} tData;
tData *ptData = malloc(sizeof(tData));
如果我理解正确,我分配了大小为tData 的内存,并将分配的内存的地址返回到指针*ptData。
但是如果我使用这个代码呢:
typedef struct {
int x;
int *pInt;
} *tData;
如果我想为这个结构分配内存,我需要一个结构名称吗?因为对我来说,如果我像malloc(sizeof(*tData)); 一样分配内存,在我看来我只是为指针分配内存,而不是为结构本身分配内存。当我想引用这个结构中的数据时,是否需要使用指向结构的指针?
这让我有点困惑,我找不到我正在寻找的答案。
谢谢你的解释!
【问题讨论】:
-
这就是为什么不要 typedef 指针!!
-
一些讨论here。显然你应该只 typedef 指针像这样“如果你的代码永远不会取消引用指针”,
-
作为骗子关闭,如果这不能回答您的问题,请告诉我。
-
它没有。他们在那里讨论了我发布的第一种形式的代码。我在理解第二个方面有问题。在这种情况下,我无法避免它..
-
您可以使用您提到的结构名称,或者您可以 typedef 结构类型和指向结构类型的指针,如 typedef struct { ... } tData, *ptData;