I recently came along this line of code:
CustomData_em_free_block(&em->vdata, &eve->data);
And I thought, isn't:
a->b
just syntactic sugar for:
(*a).b
With that in mind, this line could be re-written as:
CustomData_em_free_block(&(*em).vdata, &(*eve).data);
If that's the case, what is the point of passing in
&(*a), as a parameter, and not just a? It seems like the pointer equivalent of -(-a) is being passed in in, is there any logic for this?
Thank you.
This:
&(*em).vdata
is not the same as this:
em.vdata
It is the same as this:
&((*em).vdata)
The ampersand takes the address of vdata
, which is a member of the struct pointed to by em
. The .
operator has higher precedence than the &
operator.