Можно ли получить доступ к элементам таблицы Lua с помощью указателя ac?

Я вызываю функцию C в Lua, передавая ей массив / таблицу в качестве аргумента:

tools:setColors({255,255,0}) 

В функции C я получаю размер:

 if (lua_gettop(state) == 2 && lua_istable(state, -1)) { lua_len(state, -1); int count = lua_tointeger(state, -1); lua_pop(state, 1); } 

Вместо того, чтобы повторять по таблице, можно ли получить указатель на этот массив, чтобы использовать его позже для memcpy ? Или, может быть, есть другой способ скопировать данные напрямую?

update: Что я на самом деле пытаюсь сделать, так что, возможно, у кого-то есть лучшее решение … В моем сценарии Lua я делаю некоторые вычисления с цветами. Значения RGB всех цветов сохраняются в одной большой таблице (пример выше означает один цвет). Эта таблица передается обратно на мой код C с вызовом setColors, где я обычно memcpy(_colors.data(), data, length его с помощью memcpy в std :: vector ( memcpy(_colors.data(), data, length ). В настоящий момент я делаю следующее:

  // one argument with array of colors (triple per color) lua_len(state, -1); int count = lua_tointeger(state, -1); lua_pop(state, 1); for (int i=0; i < count / 3; i++) { ColorRgb color; // struct {uint8_t red, uint8_t green, uint8_t blue} lua_rawgeti(state, 2, 1 + i*3); color.red = luaL_checkinteger(state, -1); lua_pop(state, 1); lua_rawgeti(state, 2, 2 + i*3); color.green = luaL_checkinteger(state, -1); lua_pop(state, 1); lua_rawgeti(state, 2, 3 + i*3); color.blue = luaL_checkinteger(state, -1); lua_pop(state, 1); _colors[i] = color; } 

для меня очень много кода для простой операции копирования … PS Я работаю с Lua 5.3

Нет, нельзя использовать таблицу Lua в качестве массива C с помощью указателя.

Единственный способ получить и поместить значения в таблицу Lua – это использовать Lua C API.