Cython:使用引用更改整数

时间:2018-03-01 11:01:53

标签: python cython

假设我有一个简单的函数,它将一个指向整数的指针作为输入。如何更改原始整数值?

我的想法如下:

cdef myFunc(int n, int *nnz):

    nnz_int = <uintptr_t>nnz
    nnz_int = 0
    for i in range(0, n):
        nnz_int += n

但是经过反思,我想我最初只将 nnz 的值转换为nnz_int,然后更改nnz_int,而不更改原始的nnz。我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

来自Cython docs

  

请注意,Cython使用数组访问进行指针解除引用,因为*x不是有效的Python语法,而x[0]是。

所以这应该有效:

cdef myFunc(int n, int *nnz):
    for i in range(0, n):
        nnz[0] += n

通过将n添加到指向的值n次,不确定您要实现的目标;为什么不简单地将n*n添加到其中一次?