程序开发中什么是栈是怎么理解的?

程序开发中什么是栈是怎么理解的?,第1张

栈就是一个空携册樱间,声明时候产生。

虚拟栈 来和 C 互传值。 栈上的的每个元素都是一个辩丛 Lua 值 (nil,数字,字符串,等等)。

无论何时 Lu a 调用 C,被调用的函数都得到一个新的栈, 这个栈独立于 C 函数本身的栈,也独立于之前的 Lu a 栈。 它里面包含了 Lu a 传递给 C 函数的所有参数,姿信 而 C 函数则把要返回的结果放入这个栈以返回给调用者

方便起见, 所有针对栈的 API 查询 *** 作都不严格遵循栈的 *** 作规则。 而是可以用一个 索引 来指向栈上的任何元素: 正的索引指的是栈上的绝对位置(从1开始); 负的索引则指从栈顶开始的偏移量。 展开来说,如果堆栈有 n 个元素, 那么索引 1 表示第一个元素 (也就是最先被压栈的元素) 而索引 n 则指最后一个元素; 索引 -1 也是指最后一个元素 (即栈顶的元素), 索引 -n 是指第一个元素。

当你使用 Lu a API 时, 就有责任保证做恰当的调用。 特别需要注意的是, 你有责任控制不要堆栈溢出。 你可以使用 lua_checkstack 这个函数来扩大可用堆栈的尺寸。

无论何时 Lu a 调用 C , 它都只保证至少有 LUA_MINSTACK 这么多的堆栈空间可以使用。 LUA_MINSTACK 一般被定义为 20 , 因此,只要你不是不断的把数据压栈, 通常你不用关心堆栈大小。

当你调用一个 Lua 函数却没有指定要接收多少个返回值时 (参见 lua_call), Lua 可以保证栈一定有足够的空间来接收所有的返回值, 但不保证此外留有额外的空间。 因此,在做了一次这样的调用后,如果你需要继续压栈, 则需要使用 lua_checkstack。

栈是一种能够做压栈 *** 作或出栈 *** 作的线性结构咐数前,她遵循“FILO(先进后出)”的规律。

就是有一定容量的空栈,我压栈数值衡清a,压栈数值b,然后出栈一次毕迹就得到b,再出栈一次得到a。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12408912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存