Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ctypes空终止数组_Python_Arrays_Ctypes - Fatal编程技术网

Python ctypes空终止数组

Python ctypes空终止数组,python,arrays,ctypes,Python,Arrays,Ctypes,我想用ctypes在python代码中包装一个dll库。我想输入一个以NULL结尾的字符串数组。在我的python代码中,ctype数组由 L = ['foo','bar', None] # to get a NULL terminated array arr = (ctypes.c_char_p * 3)(*L) lib.myfunc(None, arr) 在myfunc.c中,我有 void myfunc(char* p1, char** p2){ printf("%p\n", (

我想用ctypes在python代码中包装一个dll库。我想输入一个以NULL结尾的字符串数组。在我的python代码中,ctype数组由

L = ['foo','bar', None] # to get a NULL terminated array
arr = (ctypes.c_char_p * 3)(*L)
lib.myfunc(None, arr)
在myfunc.c中,我有

void myfunc(char* p1, char** p2){
    printf("%p\n", (void *) p1);

    printf("%s\n", *p2);p2++;
    printf("%s\n", *p2);p2++;
    printf("%p\n", (void *) p2);
}
如果我运行python代码,我会得到

(nil)
foo
bar
0x1eb8150    
这意味着第一个指针(无)被正确识别为空指针。但是p2指向的第三个(最后一个)项不是NULL


这种情况下有什么问题?

最后一条语句将打印
p2
本身。(指针指向指针)

您应该在最后一个语句之前取消引用
p2
like语句

printf("%p\n", (void *) *p2);