如何引用指针和修改地址

时间:2018-12-05 17:00:40

标签: cython

所以我正在研究一种算法,我想指出一些结构。指向该结构的指针传递了一些。我不理解如何通过将指针的引用传递给函数来更改指针的地址。下面的代码演示了该问题:

cdef int there=42

cdef void point_to_there(int** a):
    a[0] = &there

cdef int *a
a[0] = 13
print a[0]
point_to_there(&a)
print a[0]

给予

13
13

但是我想给

13
42

换句话说,我的想象是这样的:

there是在堆上定义的整数

point_to_there将一个指向int的指针作为指针,并获取一个指向int的指针以指向there(这是一个满口的例子)

cdef int *a分配一个指向int的指针

point_to_there(&a)将对指向该函数的int指针的引用传递给引用,以便指向int(a)的指针指向there,该指针为42。

但事实并非如此。我有什么误会?

1 个答案:

答案 0 :(得分:0)

DavidW在评论中指出

cdef int here = 13
cdef int there = 42

cdef void point_to_there(int** a):
    a[0] = &there

cdef int *a
a[0] = &here
print a[0]
point_to_there(&a)
print a[0]

将正确使用。在问题中,我们正在将内存中的任意点设置为13,这很糟糕。