void什么意思python_Python Ctypes将void指针转换为nonetype和long。这意味着什么?这是什么意思?...

在尝试使用Python的ctypes库创建一个与C兼容的结构体时,遇到了void指针的问题。创建了一个包含void指针的TestStruct结构体,但在传递给外部C函数后,该void指针的类型变成了long,且有了关联的值。这可能是因为ctypes在内部处理void指针的方式。问题在于理解这个值的意义,是否是内存地址,或者外部函数如何解释这个元素。
摘要由CSDN通过智能技术生成

我正在创建一个ctype结构。我有一个外部函数,它需要一个指向这个结构的指针传递给它。ctype结构中应该有一个void指针。在

功能原型示例:ExtFunc(

TestStruct* myVoidStruct

);

其中,我的C-等价结构定义如下:

^{pr2}$

我试图创建这样一个结构,但是Python总是将void指针解释为void指针以外的东西。在

这有什么影响,如果有的话?这是否意味着外部函数也将结构的这个元素解释为空指针以外的东西?在>>> class TestStruct(ctypes.Structure):

_fields_ = [("voidField", ctypes.c_void_p)]

>>> x = TestStruct()

一开始,虚空场就成了一个非类型>>> type(x.voidField)

但是,我可以在结构外部创建并维持一个空指针:>>> y = ctypes.c_void_p(123)

>>> y

c_void_p(123L)

如上所述,我将结构传递给外部函数。当函数完成时,结构元素的类型为“long”,并有一个关联的值>>> x.voidField

88145984L

>>> type(x.voidField)

为什么现在它是一个长型的?它的价值意义何在?这是指针的内存地址吗?指针指向的内存地址?还是它指向的内存地址的前几个字节的值?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值