在python中使用ctypes.addressof获取变量地址时出错

时间:2017-08-28 05:48:26

标签: python python-2.7 ctypes

在下面的示例中,我尝试获取m变量的地址但显示错误

>>> import ctypes
>>> m = 1
>>> ctypes.addressof(m)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: invalid type
>>>
>>>
>>> class A:
...     pass
... 
>>> 
>>> a = A()
>>> 
>>> ctypes.addressof(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: invalid type

3 个答案:

答案 0 :(得分:2)

您传递给addressof的内容不是变量,第一个示例中是Python int对象,第二个示例中是A对象。 addressof仅适用于ctypes _CData

我建议阅读Facts and myths about Python names and values以了解Python如何没有您期望的“变量”概念。

答案 1 :(得分:0)

您可以使用以下命令获取变量的地址:

id(m)
#Example Output : 51148608

要使用十六进制样式使用它:

hex(id(m))
#Output: 0x30c7740

答案 2 :(得分:0)

ctypes.addressof只能获取ctypes类型的地址:

>>> from ctypes import *
>>> m = c_int(1)
>>> addressof(m)
56017424