c_int*2
建立的是一个长度为2的数组类型,即python
typedef typedef struct{int a[2];} Type;
数组
每一次调用就是调用构造函数进行构造对象。函数
三种使用状况。翻译
C
语言函数,这种只须要经过byref
就好了。 from ctypes import * char_array_5 = c_char * 5 arg_char = char_array_5() arg_char.value = b"del" cdll.msvcrt.printf(b"%s\n",byref(arg_char))
#include<ctypes> typedef struct{char value[5];} char_array_5 ; char_array_5 arg_char; strcpy(arg_char.value,"del"); printf("%s\n",(char*)&arg_char);执行
#include<stdio.h> #include<string.h> int main() { typedef struct{char value[5];} char_array_5 ; char_array_5 arg_char; strcpy(arg_char.value,"del"); printf("%s\n",(char*)&arg_char); return 0; }
pointer
做为有实体对象的指针,和byref
相似,不过这种一般用于操做的,非匿名对象。 from ctypes import * char_array_5 = c_char * 5 arg_char = char_array_5() arg_char.value = b"del" cdll.msvcrt.printf(b"%s\n",pointer(arg_char))
POINTER
稍微复杂点。 from ctypes import * charptr = POINTER(c_char) arg_char = charptr((c_char*5)(*b'abac')) arg_char[0] = b's' print(arg_char.contents,type(arg_char.contents)) cdll.msvcrt.printf(b"%s\n",arg_char)
#include<ctypes> typedef char *charptr; charptr arg_char = new char[5]('a','b','a','c'); arg_char[0] = 's'; printf("%s\n",arg_char)