ctypes 数组

正如任何优秀的 C 程序员都知道的那样,单个值不会让你那么远。真正让我们前进的是阵列!

>>> c_int * 16
<class '__main__.c_long_Array_16'>

这不是一个真正的数组,但它非常接近! 我们创建了一个表示 16 个 ints 数组的类。

现在我们需要做的就是初始化它:

>>> arr = (c_int * 16)(*range(16))
>>> arr
<__main__.c_long_Array_16 object at 0xbaddcafe>

现在 arr 是一个包含 0 到 15 之间数字的实际数组。

可以像任何列表一样访问它们:

>>> arr[5]
5
>>> arr[5] = 20
>>> arr[5]
20

就像任何其他 ctypes 对象一样,它也有一个大小和位置:

>>> sizeof(arr)
64 # sizeof(c_int) * 16
>>> hex(addressof(arr))
'0xc000l0ff'