1 массивы типов

Как знает любой хороший программист на Си, одно значение не поможет вам так далеко. Что действительно заставит нас работать, так это массивы!

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

 

Это не фактический массив, но это чертовски близко! Мы создали класс , который обозначает массив 16 int с.

Теперь все, что нам нужно сделать, это инициализировать его:

 >>> 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'