指针作为c中的结构变量

时间:2017-10-27 10:26:19

标签: c pointers struct

当我使用这样的代码时:

typedef struct {
        int x;
        int *pInt;
} tData;

tData *ptData = malloc(sizeof(tData));   

如果我理解正确,我分配了大小为tData的内存,并将此分配的内存返回到指针*ptData

但是如果我使用这段代码怎么办:

typedef struct {
        int x;
        int *pInt;
} *tData;

如果我想为此结构分配内存,我是否需要结构名称?因为对我来说,如果我像malloc(sizeof(*tData));一样分配,我觉得我只为指针分配内存,而不是为结构本身分配内存。当我想在这个结构中引用数据时,我是否需要使用指向结构的指针?
这让我感到困惑,我无法找到我想要的答案 谢谢你的任何解释!

1 个答案:

答案 0 :(得分:3)

这是应该避免创建指针类型别名的原因之一。

至于如何使用它,而不是将类型传递给sizeof运算符,请使用变量。比如说。

typedef struct {
        int x;
        int *pInt;
} *tData;

tData ptData = malloc(sizeof *ptData);  // Allocate memory for one structure