TA的每日心情 | 郁闷 2019-9-30 18:03 |
---|
签到天数: 33 天 [LV.5]常住居民I
VIP会员
  
- 积分
- 7576
|
本帖最后由 1149 于 2018-10-7 11:19 编辑
1,传递普通类型参数
[mw_shl_code=cpp,true]int test(lua_State* lua)
{
const char* str = lua_tostring(lua, 1);//从栈底取出一个值,double类型也会被转为字符串
printf("%s\n", str);
return 0;
}[/mw_shl_code]
2,传递数组
[mw_shl_code=cpp,true]int test(lua_State* lua)
{
int len = lua_objlen(lua, 1);//咱们只有一个参数,所以我们的数组是在栈底
for (int i = 1 ; i <= len ; i++)
{
lua_pushnumber(lua, i);//lua的数组起始是从1开始,所以咱们把数组下标压入栈顶,push i
lua_gettable(lua, 1);//这个函数的动作:pop 栈顶取出下标,push arr , 这个时候 , arr的值在栈顶
const char* str = lua_tolstring(lua, -1, 0);//取出栈顶的值
lua_pop(lua, 1);//出栈一个元素,恢复初始状态
printf("%s\n", str);
}
return 0;
}[/mw_shl_code]
3,传递表参数
[mw_shl_code=cpp,true]int test(lua_State* lua)
{
lua_pushnil(lua);//push nil,这时候栈里有2个元素
while (lua_next(lua , 1))//从栈顶弹出一个键值,并push -1处的下个键值,push 对应键的值,这时候有3个元素
{
const char* str = lua_tolstring(lua, -1, 0);//取出栈顶元素
printf("%s\n" , str);
lua_pop(lua, 1);//恢复堆栈
}
return 0;
}[/mw_shl_code]
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|