程式語言C/C++/C#管理函數呼叫的方式 程式語言C/C++/C#管理程式中函數呼叫的方式很深,用到堆疊概念,若不懂得可以去google一下或修C++之類的課程,我稍微講解一下。 程式語言C/C++/C#管理程式中函數呼叫方式採用堆疊,堆疊採用FILO(First In Last Out)。 就像箱子裡的書本一樣,放在最上面的書是最晚被放的,但它會最早被拿到。 當我執行這段程式碼時,執行程序大致如下: //C++ void Z() { print("z"); print("end z"); } void A() { print("a"); Z(); print("end a"); } int main() { A(); return 0; } null->main()->A(),main()->Z(),A(),main()->A(),main()->main()->null 程式被執行前,堆疊會是 null。 程式一開始被執行時編譯器會找main()函式,堆疊會是 main()。 當A()這行被執行時 電腦會把A()函式放到(push_back)堆疊最上方,堆疊為A(),main() 然後會呼叫A(),先執行print("a")這行,再執行Z()這行。當Z()這行被執行時 電腦會把Z()函式放到(push_back)堆疊最上方,堆疊為Z(), A(),main()。當Z()被執行完後電腦會將控制權交給A(),A()函數繼續執行,堆疊是A(),main()。A()執行完後會剩下main()。main()執行完後,程式執行結束。