2010-02-05 8 views
2

Si je donne les résultats suivants:C typedef et des pointeurs sur struct

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

Qu'est-*PMYSTRUCT faire? Est-ce maintenant un type de pointeur que je dois déclarer ou juste un pointeur vers _MY_STRUCT que je peux utiliser?

Je sais que MY_STRUCT est un nouveau type qui doit être utilisé comme suit:

MY_STRUCT str; 
str.a = 2; 

Mais qu'en est-ce *PMYSTRUCT?

+0

Il s'agit d'un modèle courant de , un en-tête C par l'implémenteur du système (qui peut donc utiliser '_MY_STRUCT'). En C++, vous n'utilisez pas typedefs comme ceci, revendu. – MSalters

Répondre

6
PMYSTRUCT ms = NULL; 

est égal à

MYSTRUCT* ms = NULL; 
1

Il donnera le même effet que

typedef MYSTRUCT * PMYSTRUCT;

Il agit simplement comme un typedef au pointeur de la structure.

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

@lalithmohan: Je crois que vous vouliez utiliser PMYSTRUCT ps = & s; au lieu de MY_STRUCT ps = & s; S'il vous plaît envisager d'éditer votre réponse. – semaj

0

En c, typedef a une sémantique de classe de stockage, tout comme static, auto et extern.

Considérez ceci:

static int a, *p; - déclare un être une variable statique de type int , et p comme une variable statique du pointeur de type int .

typedef int a, *p - déclare un être le type int , et p être un pointeur de type int .

Questions connexes