x1: next
- указатель на другой экземпляр struct trip
.Может помочь картинка:
+-------+------+ +-------+------+ +-------+------+
| stuff | next | ----> | stuff | next | ----> | stuff | next | ----|||
+-------+------+ +-------+------+ +-------+------+
, где stuff
- все остальные данные, которые вы храните в этом узле (id
, year
, something
, name
, destination
).Член next
хранит адрес другого узла.
C позволяет объявлять указатели на тип struct
в определении этого типа struct
:
struct foo {
...
struct foo *fooptr;
...
};
Вам не нужно знать размер типа struct
чтобы создать указатель на него, указатели на все типы struct
имеют одинаковый размер и представление.То есть указатель на struct foo
имеет тот же размер, что и указатель на struct bar
, хотя struct foo
и struct bar
могут иметь радикально разные определения.
x2: средство typedef
позволяет создавать псевдонимы для типов - TRIP
- псевдоним для имени типа struct trip
.Это полезно, если вы хотите упростить сложный тип или абстрагироваться от деталей реализации (имя * typedef FILE
в stdio.h
является примером последнего).
x3: эта строка объявляет p_a
и p_p
как указатели на struct trip
.