все Python 3ctypesфункция
ctypes.byref
указатели
Передаёт объект ctypes в функцию на C по ссылке — как &x в C, чтобы функция могла записать результат в переменную.
Синтаксис
lib.func(ctypes.byref(x))
Нужна, когда функция C возвращает значение через указатель-параметр, как sscanf или функции, заполняющие структуру. Легче и быстрее, чем ctypes.pointer, но годится только для передачи в вызов: сохранить результат byref в переменной и разыменовать нельзя. Передавать по ссылке можно только объекты ctypes — c_int, Structure, массивы, — а не обычный int Python.
Примеры
import ctypes
import ctypes.util
libc = ctypes.CDLL(ctypes.util.find_library('c')) # → ? имя библиотеки зависит от системы
n = ctypes.c_int(0)
libc.sscanf(b'17', b'%d', ctypes.byref(n)) # → ? sscanf есть в библиотеке C на Unix
print(n.value) # → 17
print(ctypes.pointer(n).contents.value) # → 17 — pointer даёт настоящий указатель
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности