2010-02-05 99 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