2011-10-02 104 views
1

可能重复:
Typedef pointers a good idea?混淆的typedef和指针用C

我感到困惑下列要求:

typedef struct body *headerptr; 

现在,当我创建一个类型的东西指向一个结构体的headptr,创建一个新的headerptr将如下(我不知道我是否在做t他正确地):

headerptr newHeadptr; 

我是正确的假设,这将是一个指向结构体的指针?

+0

试试吧。如果它有效,那很好。如果它不回来。 –

+1

好的。那么,编译器似乎没有抱怨,它确实有效。只是不确定我是否正确地做了。 – diesel

回答

3

是的。 headerptr现在相当于struct body*

2

这将是一个指向结构体的指针。

你声明的方式,newHeadptr可能指向一个struct body。但请记住,您尚未为其指定struct body。最初,newHeadptr只会有一些垃圾值。为了纠正这一点,你可以这样:

headerptr newHeaderptr = malloc(sizeof(*newHeaderptr)); 

或:

struct body newBody; 
headerptr newHeaderptr = &newBody; 
+0

谢谢你,我已经定义了它,但我没有发布它。 ; D – diesel

+2

可能会更清楚地做'headerptr newHeaderptr = malloc(sizeof * newHeaderptr)' –

+0

@ChrisLutz,这是一个很好的观点。 – Caleb