Python ctypes中void**的表示

利用ctypes可以方便地调用本地的动态链接库dll,但是C中的“指针的指针”很难表示。
 
如果dll中有以下函数:

int test(void** p)
{
 if(p == NULL)
  return -1;
 void* a = *p;
 if(a == NULL)
  return -2;
 int* b = (int*)a;
 return *b;
}

在python中对其进行不用的测试:

test(None)
return : -1
——————————————-
a = c_void_p(None)
b = pointer(a)
test(b)
return : -2
——————————————-
a = c_int(13)
b = pointer(a)
c = pointer(b)
test(c)
return : 13

则void**的表示方法显而易见。

推荐阅读:

《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码] http://www.linuxidc.com/Linux/2013-11/92693.htm

Python脚本获取Linux系统信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

Python 的详细介绍请点这里
Python 的下载地址请点这