我正在学习更多有关Pythons ctypes模块的知识,并注意到一个奇怪的问题,我不确定如何解释。
在Windows(Python 2.7.4)上,返回以下内容:
>>> from ctypes import *
>>> c_char_p("Hello World!")
c_char_p('Hello World!')
在OSX(Python 2.7.2)上,返回以下内容:
>>> from ctypes import *
>>> c_char_p("Hello World!")
c_char_p(4479401388)
此外,在OSX上,c_char_p("Hello World!")
每次运行时都会返回不同的数值。
有人可以说明为什么会发生这种情况吗?
先谢谢。
答案 0 :(得分:2)
查看the source,__repr__
只会显示字符串
IsBadStringPtr
返回TRUE
。他们可能希望在可能的情况下显示字符串表示形式,因为这是一个非常有用的东西,但如果它指向某个意外的地方,则不会使程序崩溃。 IsBadStringPtr
仅存在于Windows上,需要进行第一次检查。坦率地说,我很惊讶他们会使用它,因为它显然已经过时了,for good reasons。