Учитывая, что ваши структуры, вероятно, созданы как несколько вызовов malloc, они, скорее всего, распределены по памяти.
Представьте себе память для массива. Вот так:
p
-----------
|0|1|2|3|4|
-----------
, чтобы вы могли позвонить *(p + 3)
, чтобы получить доступ к ближайшему значению
Для динамически размещаемых структур это, скорее всего, что-то вроде
p
---------------------------
|0|other thing|1|a|2|etc..|
---------------------------
Так что *(p + 2)
находится внутри other thing
, а это не то, что вы ожидаете.
Обходной путь заключается в том, что связанный список имеет указатель внутри; так, например, list->prox
должен быть следующим экземпляром. Нет необходимости напрямую касаться указателей.
Кстати, ваш carPilot сам по себе является типом; таким образом, вы не должны добавлять int перед ним.