In unqlite c library I found following code:
pObj = jx9VmReserveMemObj(&(*pVm),&nIdx);
typedef struct jx9_vm jx9_vm;
jx9_value * jx9VmReserveMemObj(jx9_vm *, sxu32 *);
C11, chapter §18.104.22.168, Address and indirection operators
[...] If the operand is the result of a unary
*operator, neither that operator nor the
&operator is evaluated and the result is as if both were omitted, except that the constraints on the operators still apply and the result is not an lvalue. [...]
So, yes, they are equivalent.
This construct can be used, however, to check the type of the argument against a pointer type. From the property of unary
The operand of the unary
*operator shall have pointer type.
So, the construct
pvmis a pointer or array name.
pvmis a non-pointer type variable.
See the other answer by Alter Mann for code-wise example.
One more difference (in general) is,
pVm can be assigned (can be used as LHS of the assignment operator), but