2010-02-05 94 views
2

如果我有以下幾點:ç的typedef和指針,以結構

typedef struct _MY_STRUCT 
{ 
    int a; 
    float b; 
} MY_STRUCT, *PMYSTRUCT 

是什麼*PMYSTRUCT辦?它現在是一個指針類型,我需要聲明或只是一個指向_MY_STRUCT,我可以使用?

我知道MY_STRUCT是一種新型的,需要按照如下方式使用:

MY_STRUCT str; 
str.a = 2; 

但是關於*PMYSTRUCT

+0

這是來自的常見模式,系統實現者(因此可以使用'_MY_STRUCT')的C頭。在C++中,你不使用像這樣的typedefs,重新綁定。 – MSalters 2010-02-05 15:44:50

回答

6
PMYSTRUCT ms = NULL; 

等於

MYSTRUCT* ms = NULL; 
1

它會給作爲

的typedef MYSTRUCT * PMYSTRUCT相同的效果;

它只是作爲結構指針的typedef。

0
MY_STRUCT s; 
s.a = 10; 
PMYSTRUCT ps = &s; 
ps->a = 20; 
+3

@lalithmohan:我相信你的意思是使用 PMYSTRUCT ps =&s; 而不是 MY_STRUCT ps =&s; 請考慮編輯您的答案。 – semaj 2010-02-05 16:37:09

0

在C中,typedef具有存儲類的語義,就像staticautoextern

考慮一下:

static int a, *p; - 聲明瞭一個爲類型INT的一個靜態變量,且p爲型指針的靜態變量爲int

typedef int a, *p - 聲明一個是類型INT,且p是一個類型的指針爲int