Я читаю, книга, названная ", Преподают Себе C за 21 День" (я уже изучил Java и C#, таким образом, я перемещаюсь в намного более быстрый темп). Я читал главу по указателям и ->
(стрелка) оператор подошла без объяснения. Я думаю, что это используется для вызова участников и функций (как эквивалент .
(точечный) оператор, но для указателей вместо участников). Но я не совсем уверен.
Я мог получить объяснение и пример кода?
foo-> bar
эквивалентно (* foo) .bar
, то есть получает член с именем bar
из структуры, на которую указывает foo
.
a-> b
- это просто сокращение от (* a) .b
во всех смыслах (то же самое для функций: a-> b ()
- это сокращение от (* a) .b ()
).
Да, вот и все.
Это просто точечная версия, когда вы хотите получить доступ к элементам структуры / класса, которые являются указателем, а не ссылкой.
struct foo
{
int x;
float y;
};
struct foo var;
struct foo* pvar;
pvar = malloc(sizeof(pvar));
var.x = 5;
(&var)->y = 14.3;
pvar->y = 22.4;
(*pvar).x = 6;
Вот и все!
foo-> bar
- это только сокращение для (* foo) .bar
. Вот и все.