Python Glossary English

все 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Сообщить о неточности