Кстати, а почему в "С" появилось разделение на "." и "->"?
Это "синтаксический сахар". Если 
b - поле структуры 
a, а 
p - указатель на 
a, то 
a.b, 
(*p).b и 
p->b - один и тот же объект, т.е. поле 
b структуры, на которую указывает 
p.
Создатели C любили краткие формы записи (2 литеры вместо 4), и к тому же уберегли новичков от дурной ошибки: если "забыть" скобки в выражении 
(*p).b, получим совершенно другую конструкцию 
*p.b (или 
*(p.b)), т.е. объект, на который указывает указатель 
p.b. Дело в том, что операция выбора поля структуры "
." имеет более высокий приоритет, чем операция разыменования "
*", поэтому при выборе поля структуры через указатель скобки необходимы.
Нет, правда интересно знать, как устроено изнутри, и главное - почему.
Читайте правильные книги. Несколько таких есть в моих обзорах, например, 
Expert C Programming: Deep C Secrets и 
Tutorial on Pointers and Arrays in C. Почитайте также 
блог Дэна Сакса. На несколько интересных статей я уже написал обзоры (
1, 
2, 
3, 
4), но их там гораздо больше. Человеку, который много лет состоял в комитете по стандартизации C и C++, определенно есть что рассказать по теме.