官术网_书友最值得收藏!

5-4 函數調用與棧運作

計算機語言在執行函數調用時,內部其實是使用棧在運作,下列將以實例做說明。

程序實例ch5_4.py:由函數調用了解程序語言的運作。

執行結果

上述是一個簡單的調用函數程序,接下來我們看這個程序如何應用棧運作。程序第14行調用welcome( )時,計算機內部會以棧方式配置一個內存空間。

當有函數調用時,計算機會將調用的函數名稱與所有相關的變量存儲在內存內,然后進入welcome( )函數。當執行第9行時會輸出“洪錦魁 歡迎進入明志科技大學系統”。當執行第10行時調用system( ),計算機內部會以棧方式配置一個內存空間,同時堆放在前一次調用的welcome( )內存上方。

程序接著執行第6行,輸出“洪錦魁 歡迎進入校友會系統”,然后system( )函數執行結束,此時程序返回welcome( )函數,同時將上方的內存移除,回到welcome( )函數。

上圖有一個很重要的概念是,welcome( )函數執行一半時,工作先暫停但是內存數據仍然保留,先去執行另一個函數system( )。當system( )工作結束時,可以回到welcome( )函數先前暫停的位置繼續往下執行。接著執行第11行輸出“使用明志科技大學系統很棒”。然后執行第12行調用bye( )函數,這個調用沒有傳遞變量,棧內存如下所示:

系統會將bye( )函數新增在棧上方,然后執行第3行輸出“下回見!”,接著bye( )函數執行結束。此時程序返回welcome( )函數,同時將上方的內存移除,回到welcome( )函數。

從調用bye( )到返回welcome( )函數后,由于welcome( )函數也執行結束,所以整個程序就算執行結束了。

主站蜘蛛池模板: 葫芦岛市| 北川| 东山县| 永泰县| 兴国县| 尚义县| 临邑县| 松潘县| 桑植县| 辽中县| 丰顺县| 鸡东县| 中卫市| 铜陵市| 梅州市| 揭东县| 思茅市| 潞西市| 饶河县| 怀远县| 乡宁县| 虹口区| 临邑县| 和硕县| 同德县| 香格里拉县| 东丽区| 清水县| 昌都县| 乐清市| 昭苏县| 临海市| 清涧县| 自治县| 梧州市| 巫溪县| 嘉祥县| 青河县| 富裕县| 五家渠市| 昭通市|