14.14.1.9 ポインタを渡す(または、パラメータの参照渡し)

時には、C api関数がパラメータのデータ型としてポインタを想定していることが あります。おそらくパラメータと同一の場所に書き込むためか、もしくは そのデータが大きすぎて値渡しできない場合です。これはパラメータの参照渡しとしても 知られています。

ctypesbyref関数をエクスポートしており、パラメータを参照渡しするために 使用します。pointer関数を使っても同じ効果が得られます。 しかし、pointerは本当のポインタオブジェクトを構築するためより多くの処理を行うことから、 Python側でポインタオブジェクト自体を必要としないならばbyrefを使う方がより高速です:

>>> 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'
>>>

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。