lua例子(进出栈)
#include <stdio.h>
extern "C"
{
#include "lua-5.2.2/src/lauxlib.h"
#include "lua-5.2.2/src/lualib.h"
#include "lua-5.2.2/src/lstate.h"
}
//lua与c交互栈的索引,假如栈中有5个元素
//5 -1
//4 -2
//3 -3
//2 -4
//1 -5
void stackDump(lua_State* L)
{
int i = ;
int top = lua_gettop(L);//获取栈中元素的个数,即栈顶元素的索引
for (int i = ; i < top; i++)
{
int t = lua_type(L, i);//返回栈中元素的类型
switch (t)
{
case LUA_TSTRING:
printf("%s", lua_tostring(L, i));//从栈中i索引位置取字符串,返回字符串的指针,对于字符串指针不能在函数外部,函数返回后会清理栈
break;
case LUA_TBOOLEAN: /* booleans */
printf(lua_toboolean(L, i) ? "true" : "false");
break;
case LUA_TNUMBER: /* numbers */
printf("%g", lua_tonumber(L, i));
break;
default: /* other values */
printf("%s", lua_typename(L, t));//转换类型码到类型名
break;
}
printf(" ");
}
//printf("\n");
} int main()
{
lua_State* L = luaL_newstate();
lua_pushboolean(L, );//向栈中压入bool类型
lua_pushinteger(L, );//向栈中压入int类型
lua_pushnil(L); //向栈中压入空值nil
lua_pushstring(L, "hello");//压入c风格字符串
stackDump(L);
/* true 10 nil `hello' */ lua_pushvalue(L, -); //压入堆栈上指定索引位置的拷贝到栈顶
stackDump(L);
///* true 10 nil `hello' true */ lua_replace(L, );
stackDump(L);
///* true 10 true `hello' */
/*Lua_insert移动栈顶元素到指定索引位置*/
lua_settop(L, ); //设置栈顶,不够补nil,多了删除,lua_settop(L, 0)清空栈
stackDump(L);
///* true 10 true `hello' nil nil */ lua_remove(L, -);//移除指定索引位置的元素,并将上面的元素下移
stackDump(L);
///* true 10 true nil nil */ lua_settop(L, -);
stackDump(L);
/* true */ lua_close(L);
getchar();
return ;
}
这个vs不知怎搞的老是出现蛋疼的问题
lua例子(进出栈)的更多相关文章
- HDU 4283 You Are the One ★(进出栈的括号匹配性质:区间DP)
题意 有一个队列,每个人有一个愤怒值D,如果他是第K个上场,不开心指数就为(K-1)*D.但是边上有一个小黑屋(一个FILO堆栈),可以一定程度上调整上场程序,求一种安排上场方案使得所有人的不开心指数 ...
- 【讲●解】火车进出栈类问题 & 卡特兰数应用
火车进出栈类问题详讲 & 卡特兰数应用 引题:火车进出栈问题 [题目大意] 给定 \(1\)~\(N\) 这\(N\)个整数和一个大小无限的栈,每个数都要进栈并出栈一次.如果进栈的顺序为 \( ...
- luogu P1044 火车进出栈问题(Catalan数)
Catalan数就是魔法 火车进出栈问题即: 一个栈(无穷大)的进栈序列为 1,2,3,4,...,n 求有多少个不同的出栈序列? 将问题进行抽象, 假设'+'代表进栈, 则有'-'代表出栈 那么如果 ...
- lua 例子
//顶 - - - //顶 #include <stdio.h> #include <string.h> extern "C"{ #include < ...
- lua中得栈
如果你看了LUA的文档,那么就应该很清楚LUA与C交互数据时都是用到LUA中所谓的stack.那么当我调用lua_open函数之后栈是什么样的呢?空的(luaopen_base等会往栈上加进一些东西) ...
- CH1102 火车进出栈问题(高精/卡特兰数)
描述 一列火车n节车厢,依次编号为1,2,3,-,n.每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种. 输入格式 一个数,n(n<=60000) 输出格式 一个数s表示 ...
- lua例子getglobal()
#include <stdio.h> #define MAX_COLOR 255 extern "C" { #include "lua-5.2.2/src/l ...
- 火车进出栈 java
题目描述 一列火车n节车厢,依次编号为1,2,3,…,n.每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种. 输入 一个数,n(n<=60000) 输出 一个数s表示n节 ...
- 火车进栈(进出栈的模拟,dfs爆搜)
这里有n列火车将要进站再出站,但是,每列火车只有1节,那就是车头. 这n列火车按1到n的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个死胡同,而且站台只有一条股道,火车只能倒着从 ...
随机推荐
- Struts2实现登录权限访问控制
目录: Ⅰ 条件 Ⅱ 目的 Ⅲ 分析 Ⅳ 实现 Ⅴ 具体代码实现 ------------------------------------------------------------------- ...
- vim常用操作之复制剪切粘贴,注释取消注释,多行缩进等
进入vim按下v键,选择要操作的对象 按下y复制,d剪切,p粘贴 >缩进,<取消缩进 按下esc退出操作 按下ctrl+v,选择要操作对象, 按下大写I,写入注释符号,按下d取消注释 按下 ...
- 【Hadoop】Hadoop MR Job工作流引擎
Apache Oozie 是用于 Hadoop 平台的一种工作流调度引擎.该框架(如图 1 所示)使用 Oozie 协调器促进了相互依赖的重复工作之间的协调,您可以使用预定的时间或数据可用性来触发 A ...
- java根据身份证号和获取用户年龄和性别的工具类
import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util ...
- Intellij Idea如何不显示.idea target文件夹
Intellij Idea如何不显示.idea target文件夹 学习了:https://jingyan.baidu.com/article/ceb9fb108e26958cac2ba047.htm ...
- [PWA] Cache Third Party Resources from a CDN in a React PWA
Our service worker caches our static assets - but only those assets that are included in our React A ...
- JAVA Eclipse中的Android程序如何使用线程
我们先单独定义一个java类,名字可以任意取(比如叫做ClientHeartBeat类,我当前在做一个socket通信的客户端,我们假定需要一个可以测试心跳的程序),注意他要继承Thread,然后重载 ...
- selenium从入门到应用 - 4,页面对象设计模式的实现
本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下 ...
- SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】
配置web.xml(struts2的过滤器.spring监听器.解决Hibernate延迟加载问题的过滤器.解决中文乱码的过滤器) <!-- 解决中文乱码问题 --> <filter ...
- java清除所有微博短链接 Java问题通用解决代码
java实现微博短链接清除,利用正则,目前只支持微博短链接格式为"http://域名/字母或数字8位以内"的链接格式,现在基本通用 如果链接有多个,返回结果中会有多出的空格,请注意 ...