Указатель на структуру как на структуру - PullRequest
0 голосов
/ 28 мая 2018

У меня есть следующий фрагмент кода:

typedef int T;

typedef struct Node *pNode;

typedef struct Node{
    T item;
    pNode next;
}Node;

Первое и последнее выражение typedef мне довольно ясно, но я, кажется, не понимаю второго.
Почему это определяется как структура, когда это просто указатель на узел?
И почему он не упоминается как указатель в операторе pNode next;?

1 Ответ

0 голосов
/ 28 мая 2018

Это:

typedef struct Node *pNode;

создает pNode в качестве псевдонима для типа struct Node *, то есть "указатель на struct Node".

Я против "сокрытия""указатели с typedef, но это довольно часто.

Я бы написал:

typedef struct Node {
  int item;
  struct Node *next;
} Node;
...