python3 ctypes,python调用ctypes接收指针

  python3 ctypes,python调用ctypes接收指针

  我再一次纠正之前的理解。读完这篇文章后,https://zhuanlan.zhihu.com/p/124994344有了新的认识。

  从文章(https://zhuan LAN . zhi Hu . com/p/124994344)中我们可以知道,Python的基本数据类型其实是封装在C类数据上的,也就是用结构把一层覆盖在另一层之上。如果是这样,之前的个人观点是错误的。由此看来,调用C语言的动态链接库完全可以对Python类型的数据进行操作。这个时候我们只需要找到Python数据类型下的C类数据。

  认为ctypes定义的数据类型是一种翻译,一种关系映射,还是没问题的。但它不是在C语言的内存空间中再次生成C类数据,而是在Python数据类型下找到C语言库函数可以操作的打包数据类型,因为Python数据类型是在兼容C类数据的基础上重新打包的。

  换句话说,Python数据类型是包装在C数据类型上的,而ctypes是重新包装Python数据类型,而这种包装的目的是为了暴露隐藏的C数据类型。

  ctypes包装的数据类型和Python数据类型共享同一个内存空间,并且这个内存空间兼容C数据类型,可以通过调用C语言函数来操作。

  所以,C语言调用动态链接库中的函数会自动在C类内存空间创建数据的观点是站不住脚的。所以在这里,我们认为是ctypes公开了与Python数据类型封装的C语言操作兼容的数据类型或对应的变量内存空间,然后允许Python函数和C函数对这些内存空间或变量进行操作。

  =============================================================

  主要参考文章:

  https://zhuanlan.zhihu.com/p/124994344

  转载请联系作者授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: