Lua程式設計(八十二)

2021-09-17 23:56:48 字數 1386 閱讀 6336

除了上述在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 解釋 有四種方式可以湊成總金額...

愛情八十二課,愛情三國殺

一周以來,我一直想著這個女孩。她眉目清秀,溫柔恬靜。只是愁雲緊鎖,怎乙個 鬱悶 了得。有一條長長的刀痕,赫然嵌在她白嫩的手腕上 這是她曾經放棄自己的證據,也是她來尋求心理幫助的原因。她是個第三者,是別人婚姻中不光彩的第三方。這樣的角色,讓她覺得自己就像只老鼠,走上街,人人喊打。可是她真的愛他,情願揹...