Классический вопрос на Stack Overflow, который рано или поздно задаёт каждый, кто пришёл в C из Python/JS.
Короткий ответ:
a->b — это просто синоним (*a).b. Если a — указатель на структуру, нам нужно сначала разыменовать его (*a), потом обратиться к полю (.b). Скобки обязательны из-за приоритета операторов. Чтобы каждый раз не писать (*a).b, Деннис Ритчи добавил сокращение.Чуть глубже:
— Точка
. работает на «обычной» структуре по значению.— Стрелка
-> — только когда у тебя указатель на структуру.Pattern живёт и в C++ (
operator->() у умных указателей), Rust (Box::deref), даже в Go.@prog_point (теперь ещё в VK и Max)
