[Cython] array assignment
Greg Ewing
greg.ewing at canterbury.ac.nz
Sat Oct 11 08:20:13 CEST 2008
Dag Sverre Seljebotn wrote:
> Robert Bradshaw wrote:
>
>> cdef double *a = [0.5, 0.3, 0.1, 0.1]
>
>>Note that it is still allocated on the stack, but a pointer type is
>>needed as arrays aren't lvalues.
>
> It looks a bit confusing...
I think it looks confusing, too. Is 'a' a real pointer
here? I.e. can you assign a different pointer value to
it later?
If so, then it's not obvious where the memory for the
initial value is being allocated. A C person would
probably guess that it's either statically allocated
(by analogy with char *p = "literal") or heap allocated.
Allocating it on the stack is neither a C-like nor a
Python-like thing to do.
It would be better if it were written as
cdef double a[] = [0.5, 0.3, 0.1, 0.1]
the same as a statically initialized array. The fact
that arrays aren't lvalues isn't relevant, because
this isn't an assignment, it's a specification of
an initial value.
--
Greg
More information about the Cython-dev
mailing list