C typedef и указатели на структуру - PullRequest
2 голосов
/ 05 февраля 2010

Если у меня есть следующее:

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

Что делает *PMYSTRUCT? Теперь это тип указателя, который мне нужно объявить, или просто указатель на _MY_STRUCT, который я могу использовать?

Я знаю, что MY_STRUCT - это новый тип, который необходимо использовать следующим образом:

MY_STRUCT str;
str.a = 2;

А как же это *PMYSTRUCT?

Ответы [ 4 ]

6 голосов
/ 05 февраля 2010
PMYSTRUCT ms = NULL;

равно

MYSTRUCT* ms = NULL;
1 голос
/ 05 февраля 2010

Это даст тот же эффект, что и

typedef MYSTRUCT * PMYSTRUCT;

Он просто действует как typedef для указателя структуры.

0 голосов
/ 05 февраля 2010

В c, typedef имеет семантику класса хранения, как и static, auto и extern.

Учтите это:

static int a, *p; - объявляет a как статическую переменную типа int , а p как статическую переменную типа с указателем на int .

typedef int a, *p - объявляет a как тип int , а p как тип указатель на int .

0 голосов
/ 05 февраля 2010
MY_STRUCT s;
s.a = 10;
PMYSTRUCT ps = &s;
ps->a = 20;
...