ctypes 数组
正如任何优秀的 C 程序员都知道的那样,单个值不会让你那么远。真正让我们前进的是阵列!
>>> c_int * 16
<class '__main__.c_long_Array_16'>
这不是一个真正的数组,但它非常接近! 我们创建了一个表示 16 个 int
s 数组的类。
现在我们需要做的就是初始化它:
>>> 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'