Я недавно по этой строке кода:Цель разыменования указателя в качестве параметра в C
CustomData_em_free_block(&em->vdata, &eve->data);
И я подумал, не стоит:
a->b
просто синтаксический сахар для:
(*a).b
Имея это в виду, эта линия может быть переписано как:
CustomData_em_free_block(&(*em).vdata, &(*eve).data);
Если это так, что точка перехода в
& (* а), в качестве параметра, и не только? Кажется, что указатель-эквивалент - (-a) передается внутри, есть ли для этого какая-либо логика?
Спасибо.
Я согласен с частью единорога. Во всяком случае, это имеет смысл. Так что в этом случае:. (& (* а)) б такая же, как: a.b, но без дополнительных() там, чтобы изменить порядок операций, скалярное произведение бывает первым, верно? Спасибо. –
@Leif Andersen: Да, '(& (* a)) == a'; вот в чем смысл этих двух операторов. И да, '.' имеет более высокий приоритет, чем' & '. Это не точечный продукт, но это оператор выбора членов. – Cascabel
@Leif Andersen: вы можете использовать Google для приоритета оператора C; вот таблица по википедии: http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence – Cascabel