除了上述在c語言和棧之間交換資料的函式外,c api還提供了下列用於通用棧操作的函式
int
lua_gettop
(lua_state *l)
;void
lua_settop
(lua_state *l,
int index)
;void
lua_pushvalue
(lua_state *l,
int index)
;void
lua_rotate
(lua_state *l,
int index,
int n)
;void
lua_remove
(lua_state *l,
int index)
;void
lua_insert
(lua_state *l,
int index)
;void
lua_replace
(lua_state *l,
int index)
;void
lua_copy
(lua_state *l,
int fromidx,
int toidx)
;
函式lua_gettop返回棧中元素的個數,也即棧頂元素的索引。函式lua_settop將棧頂設定為乙個指定的值,即修改棧中的元素數量。如果之前的棧頂比新設定的更高,那麼高出來的這些元素將會被拋棄; 反之,該函式會向棧中壓入nil來補充大小。特別的,函式lua_settop(l, 0)用於清空棧。
函式lua_pushvalue用於將指定索引上的元素的副本壓入棧。函式lua_rotate將指定索引的元素向棧頂轉動n個位置。若n為正數,表示將元素向棧頂方向轉動,而n為負數則表示向相反的方向轉動。
函式lua_replace彈出乙個值,並將棧頂設定為指定索引上的值,而不移動元素。函式lua_copy將乙個索引上的值複製到另乙個索引上,並且原值不受影響。
#include
#include
"lua.h"
#include
"lauxlib.h"
static
void
stackdump
(lua_state *l)
intmain
(void
)
Lua程式設計(八十二)
lua中所有的結構都是動態的 他們會按需擴充套件,並且在可能時最後重新收縮。這意味著lua中記憶體分配失敗可能無處不在,幾乎所有的操作最終都可能面臨記憶體分配失敗。此外,許多操作也可能丟擲異常。lua語言使用以異常來提示錯誤,而沒有在api的每個操作使用錯誤碼。lua使用了c語言中的setjmp機制...
LeetCode小演算法記錄(八十二)硬幣
硬幣。給定數量不限的硬幣,幣值為25分 10分 5分和1分,編寫 計算n分有幾種表示法。結果可能會很大,你需要將結果模上1000000007 示例1 輸入 n 5 輸出 2 解釋 有兩種方式可以湊成總金額 5 55 1 1 1 1 1 示例2 輸入 n 10 輸出 4 解釋 有四種方式可以湊成總金額...
愛情八十二課,愛情三國殺
一周以來,我一直想著這個女孩。她眉目清秀,溫柔恬靜。只是愁雲緊鎖,怎乙個 鬱悶 了得。有一條長長的刀痕,赫然嵌在她白嫩的手腕上 這是她曾經放棄自己的證據,也是她來尋求心理幫助的原因。她是個第三者,是別人婚姻中不光彩的第三方。這樣的角色,讓她覺得自己就像只老鼠,走上街,人人喊打。可是她真的愛他,情願揹...