【发布时间】:2017-03-26 00:10:28
【问题描述】:
我正在尝试将 numpy 数组传递给我想要更改数组值的 C 函数。但我必须将索引乘以 2 才能使其正常工作。为奇数索引分配一个值(让它为i)会导致将一个垃圾分配给索引(i-1)/2。这是源代码。
C:
#include "assign_array.h"
void assign(int *arr, int i) {
arr[i] = 2017;
}
Python:
import ctypes, numpy
lib2 = ctypes.cdll.LoadLibrary('./assign_array.so')
for i in range(5):
array = numpy.zeros(8, dtype = int)
ptr = array.ctypes.data_as(ctypes.POINTER(ctypes.c_int))
print('i = {}:'.format(i))
lib2.assign(ptr, i)
print(array)
为什么会这样?
【问题讨论】: