注意:LuaJIT ffi 的 cdata 在进行下标操作时如 C 那样从 0 开始,而不是像 Lua 中那样是从 1 开始的。
cdata
由于 LuaJIT 的 ffi 没有取地址操作,因此需要取某类型的地址的时候,要使用一个元素的数组。如使用 ffi.new('const char*[1]') 来接收指向字符串的地址,使用 ffi.new('int[1]') 来接收传回的整型;接收到的数据分别使用 ffi.string(ptr[0]) 和 ptr[0] 来获取。
ffi.new('const char*[1]')
ffi.new('int[1]')
ffi.string(ptr[0])
ptr[0]