如何在 C 中将 python 列表转换为 void 类型的指针

How to cast a python list into a pointer of type void in C

我正在尝试学习如何在 Python 中使用 ctypes,我在文档中遇到了这个示例

class Bar(Structure):
   _fields_ = [("count", c_int), ("values", POINTER(c_void_p))]

bar = Bar()
bar.values = (c_void_p * 3)(1, 2, 3)
bar.count = 3
for i in range(bar.count):
    print(bar.values[i])

这将打印

1
2
3

我真正想要的是将一个实际的python列表如arr = [1,2,3]转换成上例中bar.values的兼容类型。有什么办法可以实现这样的目标吗?

如果我没理解错的话,你想要的只是根据变量而不是硬编码数字为 values 赋值。

这样就可以了

arr = [1, 2, 3, 4]
bar = Bar()
bar.values = (c_void_p * len(arr))(*arr)
bar.count = len(arr)