当我使用这样的代码时:
typedef struct {
int x;
int *pInt;
} tData;
tData *ptData = malloc(sizeof(tData));
如果我理解正确,我分配了大小为tData
的内存,并将此分配的内存返回到指针*ptData
。
但是如果我使用这段代码怎么办:
typedef struct {
int x;
int *pInt;
} *tData;
如果我想为此结构分配内存,我是否需要结构名称?因为对我来说,如果我像malloc(sizeof(*tData));
一样分配,我觉得我只为指针分配内存,而不是为结构本身分配内存。当我想在这个结构中引用数据时,我是否需要使用指向结构的指针?
这让我感到困惑,我无法找到我想要的答案
谢谢你的任何解释!
答案 0 :(得分:3)
这是应该避免创建指针类型别名的原因之一。
至于如何使用它,而不是将类型传递给sizeof
运算符,请使用变量。比如说。
typedef struct {
int x;
int *pInt;
} *tData;
tData ptData = malloc(sizeof *ptData); // Allocate memory for one structure