在 unqlite c库中,我找到了以下代码:
pObj = jx9VmReserveMemObj(&(*pVm),&nIdx);
其中
pVm
是:typedef struct jx9_vm jx9_vm;
jx9_vm *pVm
调用的函数声明为:
jx9_value * jx9VmReserveMemObj(jx9_vm *, sxu32 *);
在调用中使用的构造
&(*pVm)
而不是pVm
是什么? &(*pVm)
是否等于pVm
? 最佳答案
引用C11
(第6.5.3.2节),地址和间接运算符
因此,是,它们是等效的。
但是,可以使用此构造来根据指针类型检查参数的类型。从一元*
运算符的属性中,
因此,构造&(*pVm)
如果pvm
是指针或数组名称,则
pvm
是非指针类型变量,则有关代码示例,请参见the other answer by Alter Mann。
另一个不同(通常)是,可以分配
pVm
(可以用作赋值运算符的LHS),但是&(*pVm)
不能。关于c - 取消引用的指针构造的地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38915128/