函式呼叫的幾點說明:
阿新 • • 發佈:2018-12-25
當在一個函式的執行期間呼叫另外一個函式時,在執行被調函式之前,系統需要完成三件事:
1. 將所有的實際引數,返回地址等資訊傳遞給被調函式儲存
2. 為被調函式的區域性變數(也包括形參)分配儲存空間
3. 將控制轉移到被調函式入口
從被調函式返回主調函式之前,系統也要完成三件事:
1. 儲存被調函式的返回結果
2. 釋放被調函式所佔的儲存空間
3. 依照被調函式儲存的返回地址將控制權轉移到呼叫函式
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
當有多個函式相互呼叫時,按照“先呼叫後返回”的原則,上述函式之間
資訊傳遞和控制轉移必須藉助“棧”來實現,即:系統將整個程式執行時所需要的
資料空間安排在一個棧中,每當呼叫一個函式時,就在棧頂分配一個儲存區,
進行壓棧操作,每當一個函式退出時,就釋放它的儲存區,就行出棧操作,
當前執行的函式永遠都在棧頂位置。
遞迴:
A函式呼叫A函式和A函式呼叫B函式在計算機看來是沒有任何區別的,
只不過用我們日常的思維方式理解比較怪異僅此而已!