我需要通过回调函数处理指针并获取其值。这很棘手,因为在第一次调用时,该指针为空。因此,执行pointer.contents会出现ValueError: NULL pointer access的错误。为了避免这种情况,如何检查指针是否为空?
空指针具有布尔值为假的特性,因此:
if pointer:
x = pointer.contents
else:
print "NULL pointer"
排版已经修订
None
是不同的类型即可。请注意,ctypes通常会将None
参数转换为NULL
指针,并且简单的指针类型(即c_void_p
,c_char_p
,c_wchar_p
)在用作函数restype
或结构体或联合体中的字段时将NULL
转换为None
。 - Eryk Sunrestype
,它是一个指针,并且该函数返回 NULL,则 ctypes 不会将其转换为 None(因为指针变量在您的作用域内,只是它恰好指向 NULL)- 您将得到一个 ctypes 指针对象,因此 x is None
总是为 False。 - KingRadical