2011-10-02 82 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