Допустим, у меня есть typedef struct {int b;} some_t; и указатель a на такую структуру. Тогда почему
typedef struct {int b;} some_t;
a
(*a).b = 5;
не совпадает с
some_t c = *a; c.b = 5;
Во втором c - это копия из *a, а c.b - это копия (*a).b.
c
*a
c.b
(*a).b
c.b = 5 изменяет копию, а неоригинал.
c.b = 5