在程式執行副程式(函數)呼叫時,通常會使用**堆疊(Stack)**資料結構。以下是簡單的說明:
-
堆疊的特性:
- 後進先出(LIFO,Last In First Out):最新放入的元素最先被取出。
- 適合用來管理程式的函數調用和返回過程。
-
函數呼叫過程中的堆疊操作:
- 呼叫函數時:
- 將當前函數的狀態(包括返回地址、局部變數等)保存到堆疊中。
- 創建新的堆疊幀來保存被調用函數的狀態。
- 函數返回時:
- 從堆疊中彈出被調用函數的堆疊幀。
- 恢復之前函數的執行狀態。
-
支持遞歸:
- 每次遞歸調用都創建一個新的堆疊幀,保存該調用的狀態。
- 基礎情況(Base Case)達到後,逐層返回,彈出相應的堆疊幀。