1. 程式人生 > >函式呼叫過程中,函式引數的入棧順序

函式呼叫過程中,函式引數的入棧順序

      函式呼叫過程中,第一個進棧的是(主函式中的)呼叫處的下一條指令(即函式呼叫語句的下一條可執行語句)的地址;然後是函式的各個引數,而在大多數C/C++編譯器中,在函式呼叫的過程中,函式的引數是由右向左入棧的;然後是函式內部的區域性變數(注意static變數是不入棧的);在函式呼叫結束(函式執行結束)後,區域性變數最先出棧,然後是引數,最後棧頂指標指向最開始存的指令地址,程式由該點繼續執行。        函式呼叫方式決定了函式引數入棧的順序,是由呼叫者函式還是被呼叫函式負責清除棧中的引數等問題,而函式名修飾規則決定了編譯器使用何種名字修飾方式來區分不同的函式,如果函式之間的呼叫約定不匹配或者名字修飾不匹配就會產生以上的問題。