У вас есть структура и указатель на структуры:
struct mystruct S;
struct mystruct *ptr;
Теперь хранятся в PTR в адрес этой структуры
ptr = &S;
Если вам необходимо получить доступ к одному члену этой структуры через указатель, у вас есть ДВА альтернативных синтаксисов
(*ptr).member = 5;
и
ptr->member = 5;
Эти два синтаксисами эквивалентны и сделать точно такое же действие.
Это только вопрос личного вкуса.
В вашем вопросе у вас есть ошибка, потому что Вы писали:
(*p).member = 5;
Вместо
(*ptr).member = 5;
Следовательно, ошибка
последний совет:
(*ptr).member = 5;
и
*ptr.member = 5;
разные вещи
(* PTR) .member = 5; означает, что вы получите адрес, на который указывает PTR, а затем хранить 5 в поле имени член
* ptr.member = 5; означает, что вы получите адрес, указанный ptr.member, а затем сохраните 5 в памяти, указанной этим адресом.
Из-за [Приоритет Оператора] (http://en.cppreference.com/w/c/language/operator_precedence) –