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)