14.14.1.9 Passing pointers (or: passing parameters by reference)
Sometimes a C api function expects a pointer to a data type as
parameter, probably to write into the corresponding location, or if
the data is too large to be passed by value. This is also known as
passing parameters by reference.
ctypes exports the byref function which is used to pass
parameters by reference. The same effect can be achieved with the
pointer function, although pointer does a lot more work since
it constructs a real pointer object, so it is faster to use byref
if you don't need the pointer object in Python itself:
>>> i = c_int()
>>> f = c_float()
>>> s = create_string_buffer('\000' * 32)
>>> print i.value, f.value, repr(s.value)
0 0.0 ''
>>> libc.sscanf("1 3.14 Hello", "%d %f %s",
... byref(i), byref(f), s)
3
>>> print i.value, f.value, repr(s.value)
1 3.1400001049 'Hello'
>>>
Release 2.5.2, documentation updated on 21st February, 2008.
See About this document... for information on suggesting changes.
|