В чем разница между. и -> при работе со структурами в C?

В языке программирования C операторы "." и "->" используются для доступа к элементам структур. Они отличаются в зависимости от того, каким образом доступ осуществляется.

Оператор "." используется для доступа к элементу структуры, когда сама структура доступна непосредственно. В этом случае, чтобы получить значение элемента структуры, мы используем оператор "." и указываем имя элемента. Например:

struct Point {
    int x;
    int y;
};

struct Point p;
p.x = 5;
p.y = 10;

В данном примере мы создаем структуру Point, которая содержит два элемента x и y. Затем мы создаем переменную p типа Point и присваиваем значения x=5 и y=10. Для доступа к элементам структуры мы использовали оператор ".".

Оператор "->" используется для доступа к элементам структуры, когда доступ осуществляется через указатель на структуру. В этом случае, чтобы получить значение элемента структуры, мы используем оператор "->" и указываем имя элемента. Например:

struct Point {
    int x;
    int y;
};

struct Point p;
struct Point *ptr = &p;
ptr->x = 5;
ptr->y = 10;

В данном примере мы создаем структуру Point и переменную ptr, которая является указателем на структуру Point. Затем мы присваиваем ptr адрес переменной p. Для доступа к элементам структуры через указатель мы используем оператор "->".

Таким образом, основное отличие между операторами "." и "->" заключается в том, каким образом обращение к элементам структуры осуществляется: через саму структуру (используя "."), или через указатель на структуру (используя "->").