如果我有以下两套代码,如何将它们粘合在一起?
void c_function(void *ptr) { int i; for (i = 0; i < 10; i++) { printf("%p", ptr[i]); } return; } def python_routine(y): x = [] for e in y: x.append(e)
如何使用x中连续的元素列表调用c_function?我试图将x强制转换为c_void_p,但这没有用。
我也尝试使用类似
x = c_void_p * 10 for e in y: x[i] = e
但这会出现语法错误。
C代码显然想要一个数组的地址。我如何做到这一点?
以下代码适用于任意列表:
import ctypes pyarr = [1, 2, 3, 4] arr = (ctypes.c_int * len(pyarr))(*pyarr)