码迷,mamicode.com
首页 > 编程语言 > 详细

Lua脚本和C++交互(二)

时间:2014-10-13 14:37:39      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   strong   sp   数据   div   

上一节讲了一些基本的Lua应用,下面,我要强调一下,Lua的栈的一些概念,因为这个确实很重要,你会经常用到。熟练使用Lua,最重要的就是要时刻知道什么时候栈里面的数据是什么顺序,都是什么。如果你能熟练知道这些,实际你已经是Lua运用的高手了。当你初始化一个栈的时候,它的栈底是1,而栈顶相对位置是-1,说形象一些,你可以把栈想象成一个环,有一个指针标记当前位置,如果-1,就是当前栈顶,如果是-2就是当前栈顶前面一个参数的位置。以此类推。当然,你也可以正序去取,这里要注意,对于Lua的很多API,下标是从1开始的。这个和C++有些不同。而且,在栈的下标中,正数表示绝对栈底的下标,负数表示相对栈顶的相对地址,这个一定要有清晰的概念,否则很容易看晕了。(栈中数据的存储方式如下图)

bubuko.com,布布扣

注:其实都是从栈底到栈顶,索引数值递增

下面看一些具体的例子:

lua_pushnumber(m_pState, 11);
lua_pushnumber(m_pState, 12);

// lua_gettop()这个API是告诉你目前栈里元素的个数
int nIn = lua_gettop(m_pState)

int nData1 = lua_tonumber(m_pState, 1);     //读取栈底第一个绝对坐标中的元素
int nData2 = lua_tonumber(m_pState, 2);     //读取栈底第二个绝对坐标中的元素
int nData3 = lua_tonumber(m_pState, -1);     //读取栈顶第一个相对坐标中的元素
int nData4 = lua_tonumber(m_pState, -2);     //读取栈顶第二个相对坐标中的元素

printf("[Test]nData1  = %d, nData2  = %d./n, nData3  = %d, nData4  = %d./n");
[Test]nData1
= 11, nData2 = 12, nData3 = 12, nData4 = 11

上述代码的栈中存储如下图:

bubuko.com,布布扣

 

Lua脚本和C++交互(二)

标签:style   blog   http   color   使用   strong   sp   数据   div   

原文地址:http://www.cnblogs.com/yyxt/p/4021916.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!