ctypes库
2014年9月27日
1 CTypes库沟通C类型与Python
1.1 基本类型
c_type:表示基本的C类型。
1.2 指针
1.2.1内建指针
c_char_p: char *
c_wchar_p: wchar_t *
c_void_p: void *
1.2.2自定义指针
POINTER(c_type): c_type类型的指针。如POINTER(c_int)表示int *。
pointer(c_type_object):c_type类型对象的指针(地址)。如a=c_int(2);pointer(2)表示&a。
注意:POINTER(c_char)和c_char_p是不同的。c_char_p指向以\0结尾的字符串,前者指向binary。
参考:https://docs.python.org/2/library/ctypes.html#ctypes.c_char_p
http://stackoverflow.com/questions/13160957/python-ctypes-and-char
1.2.3二级指针和多级指针
POINTER(POINTER(c_type)): 使用POINTER进行指针类型定义,并且可以嵌套定义二级和多级指针。如POINTER(POINTER(c_double))表示int **。
多级指针可以使用[]进行元素操作。
pointer(pointer(c_type_object)):使用pointer可以嵌套取二级和多级指针(地址)。如pointer(pointer(a))=&(&a)
1.2.4指针的初始化和内存操作
为指针初始化的过程也就是申请内存空间的过程。申请成功后返回内存空间的起始地址。
CTypes使用(类型*个数)(初始值)格式来申请内存。
int a = (c_int*2)
1.2.5指针内容p.contents
相当于C中的*。