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' >>>
See About this document... for information on suggesting changes.