【发布时间】:2019-10-12 14:33:39
【问题描述】:
我试图在 python 程序中调用 c 交换函数。使用共享对象方法,但我坚持传递python变量地址的地址。
我是python语言的新手,使用的python版本是2.7。
C 程序:
void swap_addr(int *num1, int *num2) {
int temp = *num1;
*num1 = *num2;
*num2 * temp;
}
python 程序:
from ctypes import *
val1 = 10 ;
var2 = 20 ;
lib = cdll.LoadLibrary('./swaplib.so');
lib.swap_addr.argtypes = [c_void_p, c_void_p] ;
Addr_Var1 = POINTER(c_int);
Addr_Var2 = POINTER(c_int);
print ("Before swap val1 and var2 is " + str(var1) + " & " + str(var2))
lib.swap_addr( Addr_Var1(c_int(var1)), Addr_Var2(c_int(var2)) )
print ("After swap val1 and var2 is " + str(var1) + " & " + str(var2))
我希望输出为: 交换之前 val1 和 var2 是 10 & 20 交换后 val1 和 var2 是 20 & 10
但实际输出如下: 交换之前 val1 和 var2 是 10 & 20 交换 val1 和 var2 后为 10 & 20
【问题讨论】: