Оператор dot (.
) используется для доступа к члену структуры, а оператор стрелки (->
) в C используется для доступа к члену структуры, на который ссылается данный указатель.
В самом указателе нет элементов, к которым можно получить доступ с помощью оператора точки (это фактически только номер, описывающий местоположение в виртуальной памяти, так что у него нет каких-либо членов). Таким образом, не было бы никакой двусмысленности, если бы мы просто определили оператор точки, чтобы автоматически разыменовать указатель, если он используется на указателе (информация, которая известна компилятору во время компиляции afaik).
Итак, почему создатели языка решили усложнить ситуацию, добавив этот, казалось бы, ненужный оператор? Что такое большое дизайнерское решение?