程式語言C/C++/C#管理函數呼叫的方式
程式語言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()執行完後,程式執行結束。
Comments
Post a Comment