码迷,mamicode.com
首页 > 其他好文 > 详细

结构体

时间:2014-08-14 10:58:08      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:style   使用   io   数据   ar   2014   算法   new   

C语言的世界里,程序的组成就是结构体加算法。因此,与Win32API交互中,肯定少不了结构体的类型。在Python里定义的类,并不能直接使用于C的函数,需要通过ctypes里的结构类继承之后,并按它的格式填写字段才可以使用。下面的例子就是定义一个最简单的结构体,表示屏幕上一个点的坐标的结构体,如下:

#windows应用程序
#开发人员:蔡军生(QQ:9073204) 深圳  2014-8-14
from ctypes import *
class POINT(Structure):
    _fields_ = [("x", c_int),
             ("y", c_int)]
#
point = POINT(10, 20)
print(point.x, point.y)              

point = POINT(y=5)
print(point.x, point.y)   

在这个例子里,定义了一个类POINT继承ctypes库中的Structure类,并在类POINT里的成员列表_fields_进行赋值,每个结构体的成员都是使用一个两个元素的元组表示(("x", c_int))。元组的第一个字段是表示字段的名称,第二个表示这个字段的类型。通过这种方式就可以描述了C语言里定义的结构体。在结构体里,还可以使用已经定义好的结构体,如下例子:

class FILETIME(ctypes.Structure):
    _fields_ = [("dwLowDateTime", DWORD),
                ("dwHighDateTime", DWORD)]
...
class WIN32_FIND_DATAA(ctypes.Structure):
    _fields_ = [("dwFileAttributes", DWORD),
                ("ftCreationTime", FILETIME),
                ("ftLastAccessTime", FILETIME),
                ("ftLastWriteTime", FILETIME),
                ("nFileSizeHigh", DWORD),
                ("nFileSizeLow", DWORD),
                ("dwReserved0", DWORD),
                ("dwReserved1", DWORD),
                ("cFileName", CHAR * MAX_PATH),
                ("cAlternateFileName", CHAR * 14)]

WIN32_FIND_DATAA结构体里,就引用了自定义的结构体FILETIME作为类型声明。在Python里定义与C接口交换数据的结构体,最特殊的一点是一定要继承类ctypes.Structure,否则使用不了,一定要记住这一点。


结构体,布布扣,bubuko.com

结构体

标签:style   使用   io   数据   ar   2014   算法   new   

原文地址:http://blog.csdn.net/caimouse/article/details/38553107

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!