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'