Nic*_*lfi 7 c python pointers cython
我正在编写一个构造unsigned char *malloc'd数组的函数,然后返回指针.在纯Cython或C中,这很容易.您所要做的就是在函数上设置返回类型,并将指针返回到数组.完成.但是,我已经达到了一个点,我需要将一个指向Cython中创建的数组的指针返回给Python.我知道指针只是内存地址.有没有什么方法可以返回一个Cython指针到Python作为python对象(如int或hex,因为内存地址本质上是一个数字),所以我可以基本上管理python中的指针?
我试图像这样返回指针的值:
cdef unsigned char array[8]
def return_pointer():
return &array
Run Code Online (Sandbox Code Playgroud)
这当然不起作用,因为转换不能完成.Cython抱怨Cannot convert 'unsigned char (*)[8]' to Python object.有什么建议?
编辑:
我不需要访问Python中指针引用的内存地址中的值,只传递指针.然后我计划使用Python对象指针,并以它作为参数调用c函数.
小智 18
您可以将指针强制转换为适当的C类型,然后由Cython将其转换为Python整数.正确的C型是uintptr_t从<stddef.h>其中在用Cython将经由可用的from libc.stdint cimport uintptr_t.演员当然是写的<uintptr_t>array_or_pointer.