栈就是一个空间,声明时候产生。
1.虚拟栈 来和 C 互传值。 栈上的的每个元素都是一个 Lua 值 (nil,数字,字符串,等等)。
无论何时 Lu a 调用 C,被调用的函数都得到一个新的栈, 这个栈独立于 C 函数本身的栈,也独立于之前的 Lu a 栈。 它里面包含了 Lu a 传递给 C 函数的所有参数, 而 C 函数则把要返回的结果放入这个栈以返回给调用者
2.方便起见, 所有针对栈的 API 查询操作都不严格遵循栈的操作规则。 而是可以用一个 索引 来指向栈上的任何元素: 正的索引指的是栈上的绝对位置(从1开始); 负的索引则指从栈顶开始的偏移量。 展开来说,如果堆栈有 n 个元素, 那么索引 1 表示第一个元素 (也就是最先被压栈的元素) 而索引 n 则指最后一个元素; 索引 -1 也是指最后一个元素 (即栈顶的元素), 索引 -n 是指第一个元素。
3.当你使用 Lu a API 时, 就有责任保证做恰当的调用。 特别需要注意的是, 你有责任控制不要堆栈溢出。 你可以使用 lua_checkstack 这个函数来扩大可用堆栈的尺寸。
4.无论何时 Lu a 调用 C , 它都只保证至少有 LUA_MINSTACK 这么多的堆栈空间可以使用。 LUA_MINSTACK 一般被定义为 20 , 因此,只要你不是不断的把数据压栈, 通常你不用关心堆栈大小。
5.当你调用一个 Lua 函数却没有指定要接收多少个返回值时 (参见 lua_call), Lua 可以保证栈一定有足够的空间来接受所有的返回值, 但不保证此外留有额外的空间。 因此,在做了一次这样的调用后,如果你需要继续压栈, 则需要使用 lua_checkstack。
6.而是可以用一个 索引 来指向栈上的任何元素: 正的索引指的是栈上的绝对位置(从1开始); 负的索引则指从栈顶开始的偏移量。 展开来说,如果堆栈有 n 个元素, 那么索引 1 表示第一个元素 (也就是最先被压栈的元素) 而索引 n 则指最后一个元素; 索引 -1 也是指最后一个元素 (即栈顶的元素), 索引 -n 是指第一个元素。
7. 但不保证此外留有额外的空间。 因此,在做了一次这样的调用后,如果你需要继续压栈, 则需要使用 lua_checkstack。
分析如下:
栈是一种数据结构。
1、栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
2、栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
3、栈可以用来在函数调用的时候存储断点,做递归时要用到栈。
拓展资料:
1、栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
2、栈是限定仅在表头进行插入和删除操作的线性表。要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质。"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。
(资料来源:百度百科:栈)
栈与系统栈
从计算机科学的角度来看,栈指的是一种数据结构,是一种先进后出的数据表。栈的最常见操作有两种:压栈(PUSH)、弹栈(POP);用于标识栈的属性也有两个:栈顶(TOP)、栈底(BASE)
PUSH:为栈增加一个元素的操作叫做PUSH,相当于在这摞扑克牌的最上面再放上一张。
希望我的回答能解决你的问题
计算机里栈是什么意思啊?
栈是一种数据结构。1、栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈...
计算机中什么是栈是怎么理解的?
栈就是一个空间,声明时候产生。1.虚拟栈 来和 C 互传值。 栈上的的每个元素都是一个 Lua 值 (nil,数字,字符串,等等)。无论何时 Lu a 调用 C,被调用的函数都得到一个新的栈, 这个栈独立于 C 函数本身的栈,也独立于之前的 Lu a 栈。 它里面包含了 Lu a 传递给 C 函数的所有...
栈是什么意思
栈是一种线性数据结构。接下来对栈进行详细解释:1. 栈的基本定义:栈是一种特殊的线性表,它只允许在同一端进行插入和删除操作。这一端被称为栈顶,另一端称为栈底。由于这种特性,它也被称为“后进先出”的数据结构,即最后一个被放入栈的元素总是第一个被取出。2. 栈的工作原理:想象一个堆...
计算机中的栈是啥
计算机中的栈是一个动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。在i386机器中,栈顶由称为esp的寄存器进行定位。压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一...
计算机中的栈是啥
计算机中的栈是一种运算受限的线性表。栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈...
栈在计算机科学中是什么意思?
栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线形表。栈是一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先...
计算机栈是什么意思?
计算机栈,也被称为堆栈或LIFO(后进先出)栈,是一种基于内存的数据结构,用于存储程序执行过程中的临时变量和函数调用的信息。栈的操作可以通过压入(Push)和弹出(Pop)两个基本操作完成,其中压入操作将数据放入栈顶,弹出操作则从栈顶移除数据。栈顶指向的位置也被称为栈顶指针(Stack Pointer,SP...
栈什么意思
以下是关于栈的详细解释:1. 栈的基本定义:栈可以被视为一种容器,它可以存储数据。但与普通容器不同的是,栈中的数据的存取遵循特定的规则。它允许数据在容器的单一端进行插入和删除操作,这一端被称为栈顶。这种数据结构的特点是后进先出。这意味着最后一个被放入栈的数据会第一个被取出。2. ...
计算机当中的栈是什么?有何作用
从计算机科学的角度来看,栈指的是一种数据结构,是一种先进后出的数据表。栈的最常见操作有两种:压栈(push)、弹栈(pop);用于标识栈的属性也有两个:栈顶(top)、栈底(base)push:为栈增加一个元素的操作叫做push,相当于在这摞扑克牌的最上面再放上一张。希望我的回答能解决你的问题 ...
计算机二级中的栈是什么意思
栈是限定只在一端进行插入与删除的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是后被插入的元素,从而也是先被删除的元素;栈底元素总是先被插入的元素,从而也是后才能被删除的元素。栈是按照"先进后出"或"后进先出"的原则组织数据的。拓展:...